Fonctionnement "Contact Form" html/php
deadwingtree
Messages postés
3
Statut
Membre
-
jordane45 Messages postés 40050 Statut Modérateur -
jordane45 Messages postés 40050 Statut Modérateur -
Bonjour à tous,
Je suis quasi débutant en html/php...
Je viens d'ajouter un formulaire de contact sur mon site, mais je ne sais pas trop bien comment le faire fonctionner. Ci-dessous, vous trouverez des extraits de code HTML et PHP.
Si quelqu'un pouvait m'aider, je lui en serai très reconnaissant !
Merci d'avance !
Alex
Je suis quasi débutant en html/php...
Je viens d'ajouter un formulaire de contact sur mon site, mais je ne sais pas trop bien comment le faire fonctionner. Ci-dessous, vous trouverez des extraits de code HTML et PHP.
Si quelqu'un pouvait m'aider, je lui en serai très reconnaissant !
Merci d'avance !
Alex
<div class="row">
<div class="span9">
<form id="contact-form" class="contact-form" action="#">
<p class="contact-name">
<input id="contact_name" type="text" placeholder="Nom" value="" name="name" />
</p>
<p class="contact-email">
<input id="contact_email" type="text" placeholder="Email" value="" name="email" />
</p>
<p class="contact-message">
<textarea id="contact_message" placeholder="Message" name="message" rows="15" cols="40"></textarea>
</p>
<p class="contact-submit">
<a id="contact-submit" class="submit" href="#">Envoyer</a>
</p>
<div id="response">
</div>
</form>
</div>
<?php
/*
* Contact Form Class
*/
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
$admin_email = 'your@yourdomain.com'; // Your Email
$message_min_length = 5; // Min Message Length
class Contact_Form{
function __construct($details, $email_admin, $message_min_length){
$this->name = stripslashes($details['name']);
$this->email = trim($details['email']);
$this->subject = 'Contact from Your Website'; // Subject
$this->message = stripslashes($details['message']);
$this->email_admin = $email_admin;
$this->message_min_length = $message_min_length;
$this->response_status = 1;
$this->response_html = '';
}
private function validateEmail(){
$regex = '/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i';
if($this->email == '') {
return false;
} else {
$string = preg_replace($regex, '', $this->email);
}
return empty($string) ? true : false;
}
private function validateFields(){
// Check name
if(!$this->name)
{
$this->response_html .= '<p>Please enter your name</p>';
$this->response_status = 0;
}
// Check email
if(!$this->email)
{
$this->response_html .= '<p>Please enter an e-mail address</p>';
$this->response_status = 0;
}
// Check valid email
if($this->email && !$this->validateEmail())
{
$this->response_html .= '<p>Please enter a valid e-mail address</p>';
$this->response_status = 0;
}
// Check message length
if(!$this->message || strlen($this->message) < $this->message_min_length)
{
$this->response_html .= '<p>Please enter your message. It should have at least '.$this->message_min_length.' characters</p>';
$this->response_status = 0;
}
}
private function sendEmail(){
$mail = mail($this->email_admin, $this->subject, $this->message,
"From: ".$this->name." <".$this->email.">\r\n"
."Reply-To: ".$this->email."\r\n"
."X-Mailer: PHP/" . phpversion());
if($mail)
{
$this->response_status = 1;
$this->response_html = '<p>Thank You!</p>';
}
}
function sendRequest(){
$this->validateFields();
if($this->response_status)
{
$this->sendEmail();
}
$response = array();
$response['status'] = $this->response_status;
$response['html'] = $this->response_html;
echo json_encode($response);
}
}
$contact_form = new Contact_Form($_POST, $admin_email, $message_min_length);
$contact_form->sendRequest();
?>
A voir également:
- Fonctionnement "Contact Form" html/php
- Fonctionnement processeur - Guide
- Fonctionnement du protocole http - Guide
- Editeur html - Télécharger - HTML
- Html br ✓ - Forum Webmastering
- Retrouver contact supprimé - Accueil - Android
1 réponse
Bonjour,
Déjà.. il te manque la méthode d'envoie des données dans ton FORM
et dans ce cas là.. il faut modifier ton bouton en remplaçant ton lien
par
ou alors... vu que tu ne sembles pas utiliser de bouton "submit" mais un lien ... c'est qu'il doit y avoir du javascript quelque part... et que tu ne nous as pas donné !
Par contre.. un conseil...
Places le code de ta CLASS dans un fichier PHP à part.
form.class.php
Tu n'auras plus qu'à l'inclure dans ta page ...
Déjà.. il te manque la méthode d'envoie des données dans ton FORM
<form id="contact-form" class="contact-form" action="#" method="post">
et dans ce cas là.. il faut modifier ton bouton en remplaçant ton lien
<p class="contact-submit">
<a id="contact-submit" class="submit" href="#">Envoyer</a>
</p>
par
<p class="contact-submit"> <input id="contact-submit" class="submit" type="submit" value="Envoyer"> </p>
ou alors... vu que tu ne sembles pas utiliser de bouton "submit" mais un lien ... c'est qu'il doit y avoir du javascript quelque part... et que tu ne nous as pas donné !
Par contre.. un conseil...
Places le code de ta CLASS dans un fichier PHP à part.
form.class.php
<?php
/*
* Contact Form Class
*/
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
class Contact_Form{
function __construct($details, $email_admin, $message_min_length){
$this->name = stripslashes($details['name']);
$this->email = trim($details['email']);
$this->subject = 'Contact from Your Website'; // Subject
$this->message = stripslashes($details['message']);
$this->email_admin = $email_admin;
$this->message_min_length = $message_min_length;
$this->response_status = 1;
$this->response_html = '';
}
private function validateEmail(){
$regex = '/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i';
if($this->email == '') {
return false;
} else {
$string = preg_replace($regex, '', $this->email);
}
return empty($string) ? true : false;
}
private function validateFields(){
// Check name
if(!$this->name)
{
$this->response_html .= '<p>Please enter your name</p>';
$this->response_status = 0;
}
// Check email
if(!$this->email)
{
$this->response_html .= '<p>Please enter an e-mail address</p>';
$this->response_status = 0;
}
// Check valid email
if($this->email && !$this->validateEmail())
{
$this->response_html .= '<p>Please enter a valid e-mail address</p>';
$this->response_status = 0;
}
// Check message length
if(!$this->message || strlen($this->message) < $this->message_min_length)
{
$this->response_html .= '<p>Please enter your message. It should have at least '.$this->message_min_length.' characters</p>';
$this->response_status = 0;
}
}
private function sendEmail(){
$mail = mail($this->email_admin, $this->subject, $this->message,
"From: ".$this->name." <".$this->email.">\r\n"
."Reply-To: ".$this->email."\r\n"
."X-Mailer: PHP/" . phpversion());
if($mail)
{
$this->response_status = 1;
$this->response_html = '<p>Thank You!</p>';
}
}
function sendRequest(){
$this->validateFields();
if($this->response_status)
{
$this->sendEmail();
}
$response = array();
$response['status'] = $this->response_status;
$response['html'] = $this->response_html;
echo json_encode($response);
}
}//Fin de la class
?>
Tu n'auras plus qu'à l'inclure dans ta page ...
<?php
//import du fichier class Form
require_once("form.class.php");
//déclaration des variables
$admin_email = 'your@yourdomain.com'; // Your Email
$message_min_length = 5; // Min Message Length
//Si le Submit POST est envoyé :
if(isset($_POST)){
try {
$contact_form = new Contact_Form($_POST, $admin_email, $message_min_length);
$contact_form->sendRequest();
} catch (Exception $e) {
echo 'Exception reçue : ', $e->getMessage(), "\n";
}
}// fin du traitement du submit
?>
<div class="row">
<div class="span9">
<form id="contact-form" class="contact-form" method="post" action="#">
<p class="contact-name">
<input id="contact_name" type="text" placeholder="Nom" value="" name="name" />
</p>
<p class="contact-email">
<input id="contact_email" type="text" placeholder="Email" value="" name="email" />
</p>
<p class="contact-message">
<textarea id="contact_message" placeholder="Message" name="message" rows="15" cols="40"></textarea>
</p>
<p class="contact-submit">
<input id="contact-submit" class="submit" type="submit" value="Envoyer">
</p>
<div id="response">
</div>
</form>
</div>