Formulaire de contact non fonctionnel

Fermé
Horizon355 Messages postés 61 Date d'inscription lundi 6 décembre 2010 Statut Membre Dernière intervention 6 août 2016 - Modifié par Horizon355 le 22/03/2014 à 03:29
mrphp Messages postés 28 Date d'inscription jeudi 27 février 2014 Statut Membre Dernière intervention 26 mars 2014 - 26 mars 2014 à 22:49
Bonjour,
Je rencontre actuellement un soucis avec le php de mon formulaire de contact...
C'est un formulaire basique et j'aimerais récupérer les données sur ma boite perso
voici le code :
<?php


define("mon mail", '');

error_reporting (E_ALL ^ E_NOTICE);

//////////////////////////////////////////////////////

function ValidateEmail($email)
{
$regex = '/([a-z0-9_.-]+)'. # name
'@'. # at
'([a-z0-9.-]+){2,255}'. # domain & possibly subdomains
'.'. # period
'([a-z]+){2,10}/i'; # domain extension

if($email == '')
return false;
else
$eregi = preg_replace($regex, '', $email);
return empty($eregi) ? true : false;
}

//////////////////////////////////////////////////////

$post = (!empty($_POST)) ? true : false;

if($post)
{
$nom = stripslashes($_POST['nom']);
$prenom = stripslashes($_POST['prenom']);
$email = trim($_POST['email']);
$organisme = stripslashes($_POST['organisme']);
$tel = stripslashes($_POST['tel']);
$message = stripslashes($_POST['message']);

$error = '';

// Check name
if(!$nom || $nom == "Nom*")
$error .= 'Veuillez entrer votre nom.<br />';

// Check email
if(!$email || $email == "Email*")
$error .= 'Veuillez entrer une adresse e-mail.<br />';

if($email && !ValidateEmail($email))
$error .= 'Veuillez entrer une adresse e-mail valide.<br />';

// Check message
if(!$message)
$error .= "Veuillez entrer votre message.<br />";

if(!$error)
{
$mail = mail("mon mail", $organisme, $message, $tel, $prenom,
"From: ".$nom." <".$email.">\r\n"
."Reply-To: ".$email."\r\n"
."X-Mailer: PHP/" . phpversion());

if($mail)
echo 'OK';
}
else
echo '<div class="formstatuserror">'.$error.'</div>';
}

?>

Où est le problème ?
Pour info, j'ai une erreur au niveau de la récupération du mail (j'ai remplacé mon véritable mail par "mon mail")

Cordialement

3 réponses

ReDLoG Messages postés 243 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 octobre 2021 57
22 mars 2014 à 14:11
Bonjour,

>> Pour info, j'ai une erreur au niveau de la récupération du mail (j'ai remplacé mon véritable mail par "mon mail")
Quelle est l'erreur retournée par la fonction mail ou par PHP?
Cdlt.
0
Horizon355 Messages postés 61 Date d'inscription lundi 6 décembre 2010 Statut Membre Dernière intervention 6 août 2016 1
22 mars 2014 à 14:27
( ! ) Warning: mail() expects at most 5 parameters, 6 given in C:\UwAmp\www\Mon site\php\send.php on line 62
Call Stack
# Time Memory Function Location
1 0.0591 349792 {main}( ) ..\send.php:0
2 0.1102 351120 mail ( ) ..\send.php:62

La line 62 c'est $mail
0
ReDLoG Messages postés 243 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 octobre 2021 57
22 mars 2014 à 17:26
Ben le message est explicite (même si il est en anglais), la fonction PHP mail() accepte 5 paramètres au maximum, tu en donnes 6 donc ça ne passe pas!
Je te laisse lire la doc officielle à ce sujet et je t'invites à la lire régulièrement lorsque tu as un souci dans l'utilisation d'une fonction PHP quelle qu'elle soit...
https://www.php.net/manual/fr/function.mail.php

Cdlt.
0
Horizon355 Messages postés 61 Date d'inscription lundi 6 décembre 2010 Statut Membre Dernière intervention 6 août 2016 1
25 mars 2014 à 13:45
Il n'y a aucun moyen de pouvoir récupérer plus de 5 paramètres ?
0
ReDLoG Messages postés 243 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 octobre 2021 57
25 mars 2014 à 22:17
Bonsoir,

>> Il n'y a aucun moyen de pouvoir récupérer plus de 5 paramètres ?

Ben non, 5 paramètres c'est largement suffisant! C'est tout simplement toi qui ne sait pas organiser ton script pour récupérer TOUTES les infos du formulaire dont tu as besoin. Par exemple :
<?php
define('TO', 'destinataire@yourdomain.com');
error_reporting (E_ALL ^ E_NOTICE);

function ValidateEmail($email) {
	$regex = '/([a-z0-9_.-]+)'. # name
	'@'. # at 
	'([a-z0-9.-]+){2,255}'. # domain & possibly subdomains
	'.'. # period 
	'([a-z]+){2,10}/i'; # domain extension

	if($email == '') 
		return false;
	else 
		$eregi = preg_replace($regex, '', $email);
	return empty($eregi) ? true : false;
}

$error = '';

// Check name
if(!empty($_POST['nom']) || $_POST['nom'] != "Nom*") {
	$nom = stripslashes($_POST['nom']);
} else {
	$error .= 'Veuillez entrer votre nom.<br />';
}

if(!empty($_POST['prenom']) || $_POST['prenom'] != "Prénom*") {
	$prenom = stripslashes($_POST['prenom']);
} else {
	$error .= 'Veuillez entrer votre prénom.<br />';
}

// Check email
if(!empty($_POST['email']) || $_POST['email'] != "Email*" || ValidateEmail($_POST['email'])) {
	 $email = trim($_POST['email']);
} else {
	$error .= 'Veuillez entrer une adresse e-mail.<br />';
}

// Check message 
if(!empty($_POST['message'])) {
	// Objet du message
	$objet = "Un message envoyé depuis votre site web";

	$message = "Un message de ".$nom." ".$prenom."\r\n";
	if(!empty($_POST['organisme'])) {
		$message .= "Organisme: ".stripslashes($_POST['organisme'])."\r\n";
	} else {
		$message .= "Organisme: aucun organisme spécifié.\r\n";
	}
	if(!empty($_POST['tel'])) {
		$message .=  "Téléphone: ".stripslashes($_POST['tel'])."\r\n";
	} else {
		$message .= "Téléphone: aucun numéro renseigné.\r\n";
	}
	$message .= stripslashes($_POST['message'])."\r\n";

	//Header du mail
	$header = "From: ".$nom." <".$email.">\r\n";
	$header .= "Reply-To: ".$email."\r\n";
	$header .= "MIME-Version: 1.0\r\n";
	$header .= "Content-type: text/plain; charset=iso-8859-1\r\n";
	$header .= "Content-Transfer-Encoding: 8bit\r\n";
	$header .= "X-Mailer: PHP/".phpversion()."\r\n";
} else {
	$error .= "Veuillez écrire votre message.<br />";
}

if(empty($error)) {
	if(mail(TO, $objet, $message, $header)) {
		echo 'Votre message a été envoyé avec succès.';
	} else {
		echo '<div class="formstatuserror">Un incident technique a empêché l'envoi de votre message. Veuillez réessayer un peu plus tard.</div>';
	}
} else {
	echo '<div class="formstatuserror">'.$error.'</div>';
}
?>

Cdlt.
0
Horizon355 Messages postés 61 Date d'inscription lundi 6 décembre 2010 Statut Membre Dernière intervention 6 août 2016 1
26 mars 2014 à 00:39
Bonsoir,
J'ai essayé de faire fonctionner le formulaire et je retrouve une nouvelle erreur, différente cette fois :
Warning: mail() [<a href='function.mail'>function.mail</a>]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\UwAmp\www\Mon site\php\send.php on line 71

D'après le début de l'erreur, ça viendrait de mon ordinateur et pas du code
Sinon, comment faire avec ini_set() à la ligne 71 comme précisé ?
Dois-je faire un ini_set($objet, $message, $header) ?
J'ai quand même été voir sur php.net mais je ne saisis pas bien le problème

Cordialement
0
ReDLoG Messages postés 243 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 octobre 2021 57
26 mars 2014 à 10:48
Bonjour,

Ton mail n'est pas configuré en local (sur ton ordi dans le fichier php.ini) mais ce script sera fonctionnel une fois que tu auras déposé le fichier sur un serveur en ligne, si bien entendu cet hébergeur autorise l'utilisation de la fonction mail() et si elle n'est pas "bridée".
Cdlt.
0
mrphp Messages postés 28 Date d'inscription jeudi 27 février 2014 Statut Membre Dernière intervention 26 mars 2014 1
26 mars 2014 à 22:49
Voici un générateur de formulaire formidable qui donne du code qui marche super:

http://www.ge-net.ch/page/rw-wfco-owb-0.html

Important: ta page où tu mettra le code doit avoir l'extension php par exemple

page.php si c'est une page page.html le code ne sera pas interpreté

bonne chance
0