1

練習用に簡単なお問い合わせフォームを作りましたが、なぜかうまくいきません。これが私のコードです:

 <?php
 if($_SERVER['REQUEST_METHOD'] == "POST") {

 $required = array('name', 'email', 'onderwerp', 'bericht');

 $error = false;
 foreach($required as $field) {
   if (empty($_POST[$field])) {
     $error = true;
   }
  }

 if ($error) {
   echo "All fields are required!";
 } else {
  $to = 'example@example.com';
  $datum = date("d-m-Y H:i"); 
  $ip = $_SERVER['REMOTE_ADDR'];
  $naam = $_POST['name'];
  $email = $_POST['email'];
  $from = $_POST['email'];
  $onderwerp = $_POST['onderwerp'];
  $bericht = $_POST['bericht'];
  $subject = "New e-mail!: $onderwerp";
  $message .= $bericht . "\n\n"; 
  $message .= "-----------------------------\n"; 
  $message .= "From:: " . $name . " (" . $_POST['email'] . ")\n"; 
  $message .= "IP-adres: " . $ip . "\n"; 
  $message .= "Sent on $datum \n"; 
  $headers = 'From: '.$_POST['email'];

 $sent_email = mail($to, $subject, $message, $headers);
 if (!$sent_email) {
 echo "Mail has been sent!";
 }
 else
 {
 echo "Woops!";
 }

 }

 }
 else {
// Form has not been submitted
 }

結果はおっと!しかし、なぜそれが機能しないのかわかりません:(事前に感謝します!!

4

2 に答える 2

1

ifステートメントを間違ってチェックしています。[実際にあなたのケースでメールが送信されます] あなたのコードは のはずです。

 if ($sent_email) {  // I have modified here 
 echo "Mail has been sent!";
 }
 else
 {
 echo "Woops!";
 }
于 2013-10-24T19:39:22.873 に答える
0

あなたの論理は逆です。mail()成功すると TRUE を返します。しかし、あなたはその TRUE を失敗として扱っています。あるべきなら

if ($sent_email === TRUE) {
   success ...
} else {
   failure ...
}
于 2013-10-24T19:40:18.303 に答える