Eğer php etiketleri arasında komut dosyası etiketlerini koyabilir miyim?

4 Cevap php

Ben formu gönderin bastıktan sonra kullanıcı giriş doğrular sonra bir div jquery ile fade out yapmak için çalışıyorum. Ben kullanıcı doğru bilgileri girmediniz durumda doğrular önce solmaya formu önlemek için çalışıyorum.

Ben sadece benim php etiketleri arasında komut dosyası etiketleri ekleyebilirsiniz eğer doğrulama tamamlandıktan sonra, ben sadece javascript gerçek hızlı çalıştırmak ve daha sonra php kalanı ile pick up gibi pek böylece bilmek istiyorum:

<?php

    $name = trim($_POST['name']);
    $email = $_POST['email'];
    $comments = $_POST['comments'];

    $site_owners_email = 'zeckdude@gmail.com'; // Replace this with your own email address
    $site_owners_name = 'Chris Seckler'; // replace with your name

    if (strlen($name) < 2) {
    	$error['name'] = "Please enter your name";	
    }

    if (!preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) {
    	$error['email'] = "Please enter a valid email address";	
    }

    if (strlen($comments) < 3) {
    	$error['comments'] = "Please leave a comment.";
    }

    if (!$error) {

    	require_once('phpMailer/class.phpmailer.php');
    	$mail = new PHPMailer();

    	$mail->From = $email;
    	$mail->FromName = $name;
    	$mail->Subject = "Website Contact Form";
    	$mail->AddAddress($site_owners_email, $site_owners_name);
    	$mail->AddAddress('zeckdude@gmail.com', 'Chris Seckler');
    	$mail->Body = $comments;



    	$mail->Send();
?>

<script type="text/javascript">
   $(function(){
      $('#container').fadeOut(1000);
   });
</script>



<?php 
    	echo "<li class='success'> Congratulations, " . $name . ". We've received your email. We'll be in touch as soon as we possibly can! </li>";
    	echo nl2br("<b>Message Sent:</b>

    	 From: $name

    	 Email: $email

    	 Message: $comments

    	 <br/><a href='http://www.google.com'>Link</a>");




    } # end if no error
    else {

    	$response = (isset($error['name'])) ? "<li>" . $error['name'] . "</li> \n" : null;
    	$response .= (isset($error['email'])) ? "<li>" . $error['email'] . "</li> \n" : null;
    	$response .= (isset($error['comments'])) ? "<li>" . $error['comments'] . "</li>" : null;

    	echo $response;
    } # end if there was an error sending

?>

4 Cevap

Evet, ama sonuç sizi niyetinde olmayacaktır.

PHP önceki tüm istemci (kullanıcı) gönderilen belgeye yürütülür. Belge müşteri tarafından alındıktan sonra javascript yürütülür.

Less related comments: Your script is vulnerable to Cross Site Scripting (XSS) through POST. Do not use it on a real site before you address this issue.

Eğer yapmak isteyen olabilir ne yapabileceğiniz tek yolu, php kod ikinci kısmı <div id='content' style="display:none">...other content...</div> gizli bir div içinde html içeriğini işlemek sahip olmaktır. Div gelen hiçbiri niteliğini görünür yapmak için: O, fade sonra javascript ekranı temizlemek javascript kullanmak tamamlandı.

İyi şanslar!

Neden denemiyorsunuz? Zaten kod yazdım. Ben senin kodunda gördüğünüz kadarıyla, bir sorun olmadan bunu yapmak mümkün olmalıdır.

Hayır bu kesinlikle istediğiniz şekilde çalışmaz - php komut tarayıcı ile samimi etkileşim bu tür yok ve geri gelmek ve mevcut bir formu bu şekilde başka bir şey yapamazsınız. Php çıktı üretmeye başlar ve sayfa başlığı gönderdikten sonra, bu sadece eski bir gitmek yapamaz yepyeni bir web sayfası bulunuyor.

muhtemelen jquery forms plugin bakarak düşünmelisiniz. Eğer ajax kullanarak formu göndermek, ve görünür etkin form bırakabilir. Eğer ajax göndermek, then formu solmaya ve bir sonraki şey geçmek başarılı bir geri dönüş yaşadım bir kez

Aslında sadece ben yukarıda size gösterdi kodu denedim ve oldukça iyi çalışıyor. En azından iyi görünüyor. İşte o canlı oluyor: Example Form

Şimdi ne yapmam çalışıyorum aslında fade yerine sadece içeri pop sonunda öyle yankı Mesaj almak için

Ben, o George Deglin cevabı düşünüyorum

have the second part of your php code render the html content within a div that is hidden.

<div id='content' style="display:none">
   ...other content...
</div>

Then, in javascript after the fade is complete, use javascript clear the display:none attribute from the div to make it appear.

büyük olasılıkla bunun için çalışacak.