2016-05-24 14 views
1

私はコンタクトフォーミュラについて大きな問題があります。 私は長い間、フォームを取得し、whit phpを実行しようとしました。 私は物事が今、腐ったチェックをしているということもまた、captchaの機能を持っています。PHPコンタクトフォームのWebページ

しかし、私はフォームとPHPの部分を助ける必要があります: 1.入力フィールドがOKでないときは、すべてのフォームフィールドをチェックして、エラーメッセージを表示します(入力フィールドの右側は赤色です)。 2.フォームフィールドのチェック後にすべてがOKであれば、電子メールを送信します。電子メールが送信されたことをメッセージで伝えます。

contactform.php

<?php session_start(); 
if (isset($_POST['Submit'])) { 
    if (empty($_POST["first_name"])) { 
     $nameError = "Name is required"; 
    } 
    else { 
     $name = test_input($_POST["first_name"]);  
     // check name only contains letters and whitespace 
     if (!preg_match("/^[a-zA-Z ]*$/",$name)) { 
      $nameError = "Only letters and white space allowed"; 
     } 
    } 

    // code for check server side validation 
    if(empty($_SESSION['6_letters_code']) || strcasecmp($_SESSION['6_letters_code'], $_POST['6_letters_code']) != 0){ 
     $msg="<span style='color:red'>The Validation code does not match!</span>";// Captcha verification is incorrect.  
    }else{// Captcha verification is Correct. Final Code Execute here!  
     $msg="<span style='color:green'>The Validation code has been matched.</span>";  
    } 
} 
?> 

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <meta name="generator" content="CoffeeCup HTML Editor (www.coffeecup.com)"> 
    <meta name="dcterms.created" content="sø, 22 maj 2016 18:08:14 GMT"> 
    <meta name="description" content=""> 
    <meta name="keywords" content=""> 
    <title></title>  
</head> 

<body>  
    <form action="" method="post" name="contactform" id="contactform" <?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">  
     <table width="550px">  
      <tr> 
     <td valign="top">  
       <label for="first_name">First Name *</label> 
      </td>  
       <td valign="top"> 
       <input type="text" name="first_name" id="first_name" maxlength="50" size="30"> 
       <span class="error">* <?php echo $nameError;?></span> 
       </td> 
      </tr> 
      <tr>  
       <td valign="top"">  
       <label for="last_name">Last Name *</label>  
       </td>  
       <td valign="top">  
       <input type="text" name="last_name" maxlength="50" size="30"> 
      </td> 
      </tr>  
      <tr>  
       <td valign="top">  
       <label for="email">Email Address *</label>  
       </td>  
       <td valign="top">  
       <input type="text" name="email" maxlength="80" size="30">  
       </td>  
      </tr>  
      <tr>  
       <td valign="top">  
       <label for="telephone">Telephone Number</label>  
       </td>  
       <td valign="top">  
       <input type="text" name="telephone" maxlength="30" size="30">  
       </td>  
      </tr>  
      <tr>  
       <td valign="top">  
       <label for="comments">Comments *</label>  
       </td>  
       <td valign="top">  
       <textarea name="comments" maxlength="1000" cols="25" rows="6"></textarea>  
       </td>  
      </tr>  
      <tr>  
       <td colspan="2" style="text-align:center"> 
       <?php if(isset($msg)){?> 
       <?php echo $msg;?><?php } ?><br> 
        <img src="captcha_code_file.php?rand=<?php echo rand(); ?>" id='captchaimg' ><br> 
        <label for='message'>Enter the code above here :</label><br> 
        <input id="6_letters_code" name="6_letters_code" type="text"><br> 
        <small>Can't read the image? click <a href='javascript: refreshCaptcha();'>here</a> to refresh</small> 
        </p>  
       <input name="Submit" type="submit" onclick="return validate();" value="Submit" class="button1">  
       </td>  
      </tr>  
     </table>  
    </form> 

    <script language='JavaScript' type='text/javascript'> 
    function refreshCaptcha() { 
     var img = document.images['captchaimg']; 
     img.src = img.src.substring(0,img.src.lastIndexOf("?"))+"?rand="+Math.random()*1000; 
    } 
    </script> 

    </body> 
</html> 

Send_form_email.php 私はそれを使用する場合、このコードが機能している:

しかし、その後、ユーザーは離れフォームから強制されます。 そして、すべてのエラーメッセージは空白のPHPページで与えられ、フォームにはキャプチャもありません。

if(isset($_POST['email'])) {  
    // EDIT THE 2 LINES BELOW AS REQUIRED 
    $email_to = "my email address"; 
    $email_subject = "this is a message";  
    function died($error) { 
    // your error code can go here 
    echo "We are very sorry, but there were error(s) found with the form you submitted. "; 
    echo "These errors appear below.<br /><br />"; 
    echo $error."<br /><br />"; 
    echo "Please go back and fix these errors.<br /><br />"; 
    die(); 
    } 
    // validation expected data exists 

    if(!isset($_POST['first_name']) || 
     !isset($_POST['last_name']) || 
     !isset($_POST['email']) || 
     !isset($_POST['telephone']) || 
     !isset($_POST['comments'])) 
    { 
    died('We are sorry, but there appears to be a problem with the form you submitted.'); 
    } 

    $first_name = $_POST['first_name']; // required 
    $last_name = $_POST['last_name']; // required 
    $email_from = $_POST['email']; // required 
    $telephone = $_POST['telephone']; // not required 
    $comments = $_POST['comments']; // required   

    $error_message = ""; 

    $email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 

    if(!preg_match($email_exp,$email_from)) {  
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />'; 
    } 
    $string_exp = "/^[A-Za-z .'-]+$/"; 

    if(!preg_match($string_exp,$first_name)) { 
    $error_message .= 'The First Name you entered does not appear to be valid.<br />'; 
    } 

    if(!preg_match($string_exp,$last_name)) { 
    $error_message .= 'The Last Name you entered does not appear to be valid.<br />'; 
    } 

    if(strlen($comments) < 2) { 
    $error_message .= 'The Comments you entered do not appear to be valid.<br />'; 
    } 

    if(strlen($error_message) > 0) { 
    died($error_message); 
    } 
    $email_message = "Form details below.\n\n";   

    function clean_string($string) { 
    $bad = array("content-type","bcc:","to:","cc:","href"); 
    return str_replace($bad,"",$string); 
    } 

    $email_message .= "First Name: ".clean_string($first_name)."\n"; 
    $email_message .= "Last Name: ".clean_string($last_name)."\n"; 
    $email_message .= "Email: ".clean_string($email_from)."\n"; 
    $email_message .= "Telephone: ".clean_string($telephone)."\n"; 
    $email_message .= "Comments: ".clean_string($comments)."\n"; 

    // create email headers  
    $headers = 'From: '.$email_from."\r\n". 
    'Reply-To: '.$email_from."\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 
    @mail($email_to, $email_subject, $email_message, $headers); 

?>  
<!-- include your own success html here -->  
Thank you for contacting us. We will be in touch with you very soon. 
<?php } ?> 

Send_email_form.php

+0

jQueryの検証を使用していると思いますか? https://jqueryvalidation.org/ – jakob

答えて

0

文の場合は、これを使用しているので、これが起こっています。

if(strlen($error_message) > 0) { 
    died($error_message); 
} 

実際の連絡先フォームにエラーメッセージを表示する場合は、ページ上のエラーを表示するコードのこの部分を使用してください - あなたはcontactform.phpに

// Send_email_form.php

の変更
if(strlen($error_message) > 0) 
{ 
    header('Location: contactform.php?err='.$error_message); 
    exit; 
} 

//変更を使用する必要があります。

if(isset($_GET['err']) && !empty($_GET['err']) 
{ 
    echo $_GET['err']; 
} 
+0

私はあなたの助力の後に物事を変えようとしましたが、依然として大きな問題が残っています。 私は現在2つのファイルに3つのファイルを削除しました: contactform.phpフォームを captcha_code_file.php capchaとphp。 私がしようとしているのは、入力フィールドの下にあるメッセージです。 入力FIRST_NAME((アウトフィールドオプションはいけないことをしている) 入力コメントを 入力LAST_NAME(あなたの姓を入力していない) 入力メール(あなたのメールアドレスを入力していない) 入力された電話(あなたの名前を入力していません)あなたはあなたのコメントを入力していません) captcha_code check。 –

+0

それはもっと簡単な場合は、私はあなたに電子メールを送信することができますか? –

+0

確かに私に電子メールを送ることができます。修正して、ファイルを再送信します。私の電子メールは[email protected]です –

関連する問題