2016-05-24 17 views
1

Ich habe ein großes Problem mit einem Kontaktformular. Ich habe seit langem versucht, die Form zu bekommen und mit PHP laufen. Ich habe eine Captcha-Funktion auch, dass ich Sache jetzt mit Prüfung funktioniert.PHP Kontaktformular Webseite

Aber ich brauche Hilfe Whit Formular und PHP-Teil: 1. Überprüfen Sie alle Formularfelder und geben Sie eine Fehlermeldung, wenn die Eingabefelder nicht OK sind (rechte Seite aus dem Eingabefeld in roter Farbe). 2. Senden Sie eine E-Mail, wenn alles in Ordnung ist, nachdem Sie die Formularfelder ausgefüllt haben. Und geben Sie bei Nachricht, dass die E-Mail gesendet wurde.

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 Dieser Code funktioniert, wenn ich es verwenden:

Aber dann wird der Benutzer weg von der Form gezwungen. Und alle Fehlermeldungen werden auf einer leeren PHP-Seite und nicht in der Form mit dem Captcha auch gegeben.

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

Haben Sie daran gedacht, jQuery-Validierung zu verwenden? https://jqueryvalidation.org/ – jakob

Antwort

0

Dies geschieht, weil Sie diese verwenden if-Anweisung.

Wenn Sie die Fehlermeldung auf dem tatsächlichen Kontaktformular anzeigen möchten Sie benötigen

// Änderung Send_email_form.php

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

// Änderung contactform.php verwenden - dieses Stück Code verwenden, wo Sie die Fehler auf Seite angezeigt werden sollen.

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

Ich habe versucht, die Dinge nach Ihrer Hilfe zu ändern, aber ich bin immer noch in großen Problemen. Ich habe jetzt 3 Dateien in 2 Dateien jetzt entfernt: contactform.php mit dem Formular captcha_code_file.php capcha und php. Was ich vorhabe ist eine Nachricht unter den Eingabefeldern. Eingang first_name (Sie haben keinen Namen angegeben) Eingang last_name (Sie haben Ihren Nachnamen nicht eingeben) Eingang E-Mail Eingang Telefon (optional müssen nicht sein Feld raus) (Sie haben Ihre E-Mail nicht eingeben) Eingang Kommentare (Sie haben Ihre Kommentare nicht eingegeben) captcha_code check. –

+0

Vielleicht kann ich Ihnen eine E-Mail senden, wenn das einfacher ist? –

+0

Sicher können Sie mir eine E-Mail schicken. Ich repariere und sende Ihnen die Dateien erneut. Meine E-Mail-Adresse ist [email protected] –