2010-12-12 16 views
0

Hallo zusammen, ich habe ein einfaches HTML-Kontaktformular, das zu einer .php-Datei geht, nachdem auf die Senden-Schaltfläche geklickt wurde. Im Moment, wenn es keine Fehler gibt, wenn ein Benutzer auf submit drückt, bringt es sie auf eine separate Seite mit der Nachricht "Vielen Dank für die Kontaktaufnahme mit uns ...". Wäre es möglich, diese Nachricht über das Kontaktformular zu drucken, wenn sie auf "Senden" klicken? Ich möchte wirklich, dass sie auf der aktuellen Seite bleiben, anstatt umgeleitet zu werden.Nachricht über PHP-Kontaktformular drucken

Hier ist das HTML-Formular:

<form name="contactform" method="post" action="scripts/contactform.php"> 
<table width="450px"> 
</tr> 
<tr> 
<td valign="top"> 
    <label for="first_name"><b>Name *</b></label> 
</td> 
<td valign="top"> 
    <input type="text" name="first_name" maxlength="50" size="30"> 
</td> 
</tr> 

<tr> 
<td valign="top"> 
    <label for="email"><b>Email Address *</b></label> 
</td> 
<td valign="top"> 
    <input type="text" name="email" maxlength="80" size="30"> 
</td> 

</tr> 
<tr> 
<td valign="top"> 
    <label for="telephone"><b>Telephone</b></label> 
</td> 
<td valign="top"> 
    <input type="text" name="telephone" maxlength="30" size="30"> 
</td> 
</tr> 
<tr> 
<td valign="top"> 
    <label for="message">Message: *</label> 
</td> 
<td valign="top"> 
    <textarea name="message" maxlength="1000" cols="40" rows="8"></textarea> 
</td> 

</tr> 
<tr> 
<td colspan="2" style="text-align:center"> 
    <input type="submit" value="Submit" style="height:35px; width:90px;"> 
</td> 
</tr> 
</table> 
</form> 

Hier ist die contactform.php Datei:

<?php 
if(isset($_POST['email'])) { 

    // EDIT THE 2 LINES BELOW AS REQUIRED 
    $email_to = "[email protected]"; 
    $email_subject = "Contact Form"; 


    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['message'])) { 
     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['message']; // required 

    $error_message = ""; 
    $email_exp = "^[A-Z0-9._%-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$"; 
    if(!eregi($email_exp,$email_from)) { 
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />'; 
    } 
    $string_exp = "^[a-z .'-]+$"; 
    if(!eregi($string_exp,$first_name)) { 
    $error_message .= 'The First Name you entered does not appear to be valid.<br />'; 
    } 
    if(!eregi($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 .= "Name: ".clean_string($first_name)."\n"; 
    $email_message .= "Email: ".clean_string($email_from)."\n"; 
    $email_message .= "Telephone: ".clean_string($telephone)."\n"; 
    $email_message .= "Message: ".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); 
?> 

<!-- Success HTML --> 

Thank you for contacting us. We will get back to you as soon as possible. 

<? 
} 
?> 

Irgendwelche Ideen auf, was ich tun soll?

Antwort

1
<?php 
$flag = 0; 
if(isset($_POST['email'])) { 
$flag=1; 
    // EDIT THE 2 LINES BELOW AS REQUIRED 
    $email_to = "[email protected]"; 
    $email_subject = "Contact Form"; 


    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['message'])) { 
     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['message']; // required 

    $error_message = ""; 
    $email_exp = "^[A-Z0-9._%-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$"; 
    if(!eregi($email_exp,$email_from)) { 
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />'; 
    } 
    $string_exp = "^[a-z .'-]+$"; 
    if(!eregi($string_exp,$first_name)) { 
    $error_message .= 'The First Name you entered does not appear to be valid.<br />'; 
    } 
    if(!eregi($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 .= "Name: ".clean_string($first_name)."\n"; 
    $email_message .= "Email: ".clean_string($email_from)."\n"; 
    $email_message .= "Telephone: ".clean_string($telephone)."\n"; 
    $email_message .= "Message: ".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); 
?> 

<!-- Success HTML --> 

Thank you for contacting us. We will get back to you as soon as possible. 

<? 
} 
?> 

<?php 
if($flag==0) 
{ 
?> 
<form name="contactform" method="post" action="scripts/contactform.php"> 
<table width="450px"> 
</tr> 
<tr> 
<td valign="top"> 
    <label for="first_name"><b>Name *</b></label> 
</td> 
<td valign="top"> 
    <input type="text" name="first_name" maxlength="50" size="30"> 
</td> 
</tr> 

<tr> 
<td valign="top"> 
    <label for="email"><b>Email Address *</b></label> 
</td> 
<td valign="top"> 
    <input type="text" name="email" maxlength="80" size="30"> 
</td> 

</tr> 
<tr> 
<td valign="top"> 
    <label for="telephone"><b>Telephone</b></label> 
</td> 
<td valign="top"> 
    <input type="text" name="telephone" maxlength="30" size="30"> 
</td> 
</tr> 
<tr> 
<td valign="top"> 
    <label for="message">Message: *</label> 
</td> 
<td valign="top"> 
    <textarea name="message" maxlength="1000" cols="40" rows="8"></textarea> 
</td> 

</tr> 
<tr> 
<td colspan="2" style="text-align:center"> 
    <input type="submit" value="Submit" style="height:35px; width:90px;"> 
</td> 
</tr> 
</table> 
</form> 

<?php 
} 
?> 
0

Das Beste, was zu tun wäre, Ihr Kontakt-Formular als PHP-Datei haben, so dass es bedingt die Fehlermeldung angezeigt werden kann.

Sie können das tun in einer von zwei Möglichkeiten:

  1. Haben die contactform.php Datei in das HTML-Formular umleiten zurück, wenn ein Fehler auftritt. In diesem Fall müssen Sie die Fehlermeldung in einer Sitzungsvariablen speichern.
  2. Fügen Sie die gesamte Formularverarbeitung am Anfang des HTML-Formulars ein, und weisen Sie den Aktionspunkt des Formulars auf sich selbst hin.

Dann rechts über der Form, sind nur so etwas wie

<?php if (!empty($error_message)): ?> 
    <p class="error"><?php echo $error_message; ?></p> 
<?php endif; ?> 
Verwandte Themen