2017-04-13 14 views
0

私はこのフォームを私が作成しており、以下のコードのような定義済みのセキュリティ質問をランダムに循環させるようにしたいと思います。連絡先フォームのランダム確認に関する質問

また、フォームが送信されると、サブジェクトの名前が2回印刷されます。

これを達成するにはどうすればよいですか?

<?php 
    if (isset($_POST["submit"])) { 
     $name = $_POST['name']; 
     $email = $_POST['email']; 
     $phone = $_POST['phone']; 
     $message = $_POST['message']; 
     $human = intval($_POST['human']); 
     $to = '[email protected]'; 
     $subject = 'Sent By '.$_POST['name']." ".$_POST['name']; 

     $body ="From: $name\n E-Mail: $email\n Phone: $phone\n Message:\n $message"; 
     // Check if name has been entered 
     if (!$_POST['name']) { 
      $errName = 'Please enter your 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 phone 
     if (!$_POST['phone']); { 
     } 

     //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 && !$errEmail && !$errMessage && !$errHuman) { 
    if (mail ($to, $subject, $body, $from)) { 
     $result='<div class="alert alert-success">Thank You! We will be in touch</div>'; 
    } else { 
     $result='<div class="alert alert-danger">Sorry there was an error sending your message. Please try again.</div>'; 
    } 
} 
    } 
?> 
<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <meta name="description" content="Bootstrap contact form with PHP example by BootstrapBay.com."> 
    <meta name="author" content="BootstrapBay.com"> 
    <title>Bootstrap Contact Form With PHP Example</title> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css"> 
    </head> 
    <body> 
    <div class="container"> 
     <div class="row"> 
      <div class="col-md-6 col-md-offset-3"> 
       <h1 class="page-header text-center">Contact Form Example</h1> 
       <form class="form-horizontal" role="form" method="post" action="form-test.php"> 
        <div class="form-group"> 
         <div class="col-sm-10"> 
          <input type="text" class="form-control" id="name" name="name" placeholder="First & Last Name" value="<?php echo htmlspecialchars($_POST['name']); ?>"> 
          <?php echo "<p class='text-danger'>$errName</p>";?> 
         </div> 
        </div> 
        <div class="form-group"> 
         <div class="col-sm-10"> 
          <input type="email" class="form-control" id="email" name="email" placeholder="[email protected]" value="<?php echo htmlspecialchars($_POST['email']); ?>"> 
          <?php echo "<p class='text-danger'>$errEmail</p>";?> 
         </div> 
        </div> 
        <div class="form-group"> 

         <div class="col-sm-10"> 
          <input type="text" class="form-control" id="phone" name="phone" placeholder="Phone Number" value="<?php echo htmlspecialchars($_POST['phone']); ?>"> 
          <?php echo "<p class='text-danger'>$errPhone</p>";?> 
         </div> 
        </div> 
        <div class="form-group"> 

         <div class="col-sm-10"> 
          <textarea class="form-control" rows="4" name="message"><?php echo htmlspecialchars($_POST['message']);?></textarea> 
          <?php echo "<p class='text-danger'>$errMessage</p>";?> 
         </div> 
        </div> 
        <div class="form-group"> 
         <div class="col-sm-10"> 
          <input type="text" class="form-control" id="human" name="human" placeholder="2 + 3=?"> 
          <?php echo "<p class='text-danger'>$errHuman</p>";?> 
         </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"> 
          <?php echo $result; ?> 
         </div> 
        </div> 
       </form> 
      </div> 
     </div> 
    </div> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script> 
    </body> 
</html> 
+1

Googleではこれをまず最初に確認し、見つかったコードに従って質問を更新します(問題が解決しない場合は、どのように動作するかなどについて質問があります)。スタックオーバーフローはコードを書くサービスではありません。 –

+0

私はそれをgoogleしました。また、私はコードを書くのを誰にも求めていません、私はちょうど助言を探していました。あなたはそれにどのように到着したのかわからないが、とにかく応答に感謝する。 – Dwayne360

答えて

0

あなた$subject変数に二回変数($_POST['name'])を持っているので、名前が対象で二度ある:

$subject = 'Sent By '.$_POST['name']." ".$_POST['name']; 
//         ^^^^^^^^^^^^^^^^^^ 

それはあなたが簡単にでき

$subject = 'Sent By '.$_POST['name']; 


する必要がありますGoogleで人間の認証コードを検索します。あなたは、画像ベースの人間検証、ベース数学などの多くの異なる種類を持っている

あなたは数学ベースのCAPTCHAのために行くされている場合、私はあなたが(これは主に擬似コードである)このようなものを使用することをお勧め:

<?php 
session_start(); 

$digit1 = mt_rand(1,100); 
$digit2 = mt_rand(1,100); 
$type = mt_rand(1,3); 

if($type === 1) { 
    $math = "$digit1 + $digit2"; 
    $_SESSION['answer'] = $digit1 + $digit2; 
} else if ($type === 2) { 
    $math = "$digit1 - $digit2"; 
    $_SESSION['answer'] = $digit1 - $digit2; 
} else { 
    $math = "$digit1 x $digit2"; 
    $_SESSION['answer'] = $digit1 * $digit2; 
} 
?> 
// your form 
<input type="text" class="form-control" id="human" name="human" placeholder="<?php echo $math; ?>"> 

そして、あなたのセッションの答えと人間の答えを比較することができます。

+0

ありがとうございました。 – Dwayne360

関連する問題