2010-12-12 8 views
0

Salut à tous, J'ai un formulaire de contact HTML de base qui va à un fichier .php après avoir cliqué sur le bouton Soumettre. À l'heure actuelle, s'il n'y a pas d'erreur lorsqu'un utilisateur appuie sur submit, il les amène sur une page séparée en disant "Merci de nous avoir contactés ...". Serait-il possible d'imprimer ce message au-dessus du formulaire de contact lorsqu'ils cliquent sur Envoyer? Je voudrais vraiment qu'ils restent sur la page actuelle au lieu d'être redirigés.Imprimer le message ci-dessus Formulaire de contact PHP

Voici le formulaire HTML:

<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> 

Voici le fichier contactform.php:

<?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. 

<? 
} 
?> 

Toutes les idées sur ce que je dois faire?

Répondre

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

La meilleure chose à faire serait d'avoir votre formulaire de contact en tant que fichier PHP pour qu'il puisse afficher conditionnellement le message d'erreur.

Vous pouvez le faire dans l'une des deux façons suivantes:

  1. voir le fichier de contactform.php rediriger vers le formulaire HTML si une erreur se produit. Dans ce cas, vous devrez enregistrer le message d'erreur dans une variable de session.
  2. Incluez tout le traitement de formulaire en haut du formulaire HTML et faites en sorte que l'action du formulaire pointe sur lui-même.

Ensuite, juste au-dessus de la forme, il suffit d'inclure quelque chose comme

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