Formulaire de contact non fonctionnel

Horizon355 Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   -  
mrphp Messages postés 28 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   57
 
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   Statut Membre Dernière intervention   1
 
( ! ) 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   Statut Membre Dernière intervention   57
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   57
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   57
 
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   Statut Membre Dernière intervention   1
 
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