2017-02-08 14 views
1

こんにちは私はPHPを学んでいて、HTMLとPHPを使って連絡先を決める方法を考えていますが、私は連絡先を提出しましたが、フォームを提出しようとすると空白のページ(email.php)にエラーメッセージや成功メッセージは表示されません。お問い合わせフォームHTML、PHP

これは私のHTMLです:

<form class="form-horizontal" role="form" method="post" action="email.php"> 

       <div class="form-group"> 
        <label for="name" class="col-sm-2 control-label">First Name</label> 
       <div class="col-sm-10"> 
         <input type="text" class="form-control" id="name" name="name" placeholder="First Name" value=""> 
       </div> 
       </div> 

       <div class="form-group"> 
        <label for="name-last" class="col-sm-2 control-label">Last Name</label> 
       <div class="col-sm-10"> 
        <input type="text" class="form-control" id="name" name="name" placeholder="Last Name" value=""> 
       </div> 
       </div> 

       <div class="form-group"> 
        <label for="email" class="col-sm-2 control-label">Email</label> 
       <div class="col-sm-10"> 
        <input type="email" class="form-control" id="email" name="email" placeholder="[email protected]" value=""> 
       </div> 
       </div> 

       <div class="form-group"> 
        <label for="message" class="col-sm-2 control-label">Message</label> 
       <div class="col-sm-10"> 
        <textarea class="form-control" rows="4" name="message"></textarea> 
       </div> 
       </div> 

       <div class="form-group"> 
        <label for="human" class="col-sm-2 control-label">2 + 3 = ?</label> 
       <div class="col-sm-10"> 
        <input type="text" class="form-control" id="human" name="human" placeholder="Your Answer"> 
       </div> 
       </div> 

       <div class="form-group"> 
       <div class="col-sm-10 col-sm-offset-2"> 
        <input id="submit" name="submit" type="submit" value="Send" class="btn btn-primary"> 
       </div> 
       </div> 

       <div class="form-group"> 
       <div class="col-sm-10 col-sm-offset-2"> 
       </div> 
      </div> 
     </form> 

そして、これは私のPHPです:

<?php 
    if (isset($_POST["submit"])) { 
     $name = $_POST['name']; 
     $name = $_POST['name-last']; 
     $email = $_POST['email']; 
     $message = $_POST['message']; 
     $human = intval($_POST['human']); 
     $from = 'Contact Form'; 
     $to = '[email protected]'; 
     $subject = 'Message from Contact Demo '; 

     $body ="From: $name\n $name-last\n E-Mail: $email\n Message:\n $message"; 
     // Check if name has been entered 
     if (!$_POST['name']) { 
      $errName = 'Please enter your name'; 
     } 

     // Check if last name has been entered 
     if (!$_POST['name-last']) { 
      $errName = 'Please enter your last name'; 
     } 

     // Check if email has been entered and is valid 
     if (!$_POST['email'] || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { 
      $errEmail = 'Please enter a valid email address'; 
     } 

     //Check if message has been entered 
     if (!$_POST['message']) { 
      $errMessage = 'Please enter your message'; 
     } 
     //Check if simple anti-bot test is correct 
     if ($human !== 5) { 
      $errHuman = 'Your anti-spam is incorrect'; 
     } 
// If there are no errors, send the email 
if (!$errName && !$name-last&& !$errEmail && !$errMessage && !$errHuman) { 
    if (mail ($to, $subject, $body, $from)) { 
     $result='<div class="alert alert-success">Thank You! I will be in touch</div>'; 
    } else { 
     $result='<div class="alert alert-danger">Sorry there was an error sending your message. Please try again later.</div>'; 
    } 
} 
    } 
?> 

私は私のウェブサイトをテストするためにHostingerを使用しています!誰かがこれを手伝うことができたら、私はとても感謝しています。

+0

あなたは一つのことのために ''同じ名前=「name」をもつ2倍の入力を持っています。 –

+0

名前を「last-name」に変更すると、これは機能しますか? @フレッド - i - –

+0

それを行って参照してください –

答えて

0

最後のif文は、name-lastが設定されていることを確認します...しかし決して定義しません。名前を$ _POST ['name']から$ _POST ['name-last']に再定義します。

$name = $_POST['name']; // for the first name field 
$name-last = $_POST['name-last']; // for the last name field 

$name = $_POST['name']; 
$name = $_POST['name-last']; 

あなたはフォームにご入力のすべては、あなたがPOSTのスーパーグローバル内で呼び出したい希望固有の名前を持っていることを確認してくださいする必要があります。この場合、ラベルは何もしません。

また、将来のデバッグの目的で、あなたが安全であるようにisset()でチェックしている各変数をラップすることもできます。

if(!isset($errName) && isset($name-last) && !isset($errEmail) && !isset($errMessage) && !isset($errHuman){ 
... 
} 
0

チェックこの行は、多分それは問題は二変数に変更が発生

$name = $_POST['name']; 
$name = $_POST['name-last'];