2016-05-24 2 views
1

У меня есть большая проблема с контактным формуляром. Я уже давно пытался получить форму и запустить whit php. У меня есть функция captcha, и я теперь работаю над проверкой.PHP Контактная форма веб-страница

Но мне нужна помощь в форме whit и php part: 1. проверьте все поля формы и сообщите об ошибке, когда поля ввода не в порядке (справа от поля ввода красного цвета). 2. Отправляйте адрес электронной почты, если все поля подтверждения заполнены. И дайте в сообщении, что письмо было отправлено.

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); 
} 

Если вы хотите показать сообщение об ошибке в реальной форме контакта. Вы должны использовать

// Изменение в Send_email_form.php

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

// Изменение в contactform.php - Используйте этот кусок кода, где вы хотите, чтобы отобразить ошибки на странице.

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

Я попытался изменить ситуацию после вашей помощи, но все же у меня все еще большие проблемы. Теперь я удалил 3 файла на 2 файла: contactform.php с формой captcha_code_file.php capcha и php. То, что я собираюсь, это сообщение под полями ввода. вход first_name (Вы не ввести свое имя) ввода last_name (Вы не вводите свой ЬавЬЫат) ввод электронной почты (Вы не ввести адрес электронной почты) ввод телефона (опция не должны быть полем вне) входных комментариев (Вы не вводите свои комментарии) captcha_code check. –

+0

Может быть, я могу отправить вам электронное письмо, если это проще? –

+0

Уверенный, что вы можете написать мне по электронной почте. Я исправлю, а затем снова отправлю вам файлы. моя электронная почта [email protected] –

Смежные вопросы