dadamuse

Inscris le 09/07/2008 à 15:45
  • Nombre de sujets
    1
  • Nombre de messages
    5
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses dernières news

Aucune news

Ses derniers sujets sur les forums

forum
dadamuse
Bonjour,
j'ai récupéré un form php de contact auquel j'ai voulu ajouter 3 champs et là patatra !

Mon formulaire apparaît correctement, et quand je valide, j'ai cette erreur :

Warning: mail() expects at most 5 parameters, 7 given in /../../../../../assembler.php(402) : eval()'d code on line 63




voici le formulaire d'origine :

<?php
define( 'MAIL_TO', /* >>>>> */'utilisateur@domaine.tld'/* <<<<< */ ); //ajouter votre courriel
define( 'MAIL_FROM', 'utilisateur@domaine.tld' ); // valeur par défaut
define( 'MAIL_OBJECT', 'objet du message' ); // valeur par défaut
define( 'MAIL_MESSAGE', 'votre message' ); // valeur par défaut

$mailSent = false; // drapeau qui aiguille l'affichage du formulaire OU du récapitulatif
$errors = array(); // tableau des erreurs de saisie

if( filter_has_var( INPUT_POST, 'send' ) ) // le formulaire a été soumis avec le bouton [Envoyer]
{
$from = filter_input( INPUT_POST, 'from', FILTER_VALIDATE_EMAIL );
if( $from === NULL || $from === MAIL_FROM ) // si le courriel fourni est vide OU égale à la valeur par défaut
{
$errors[] = 'Vous devez renseigner votre adresse de courrier &eacute;lectronique.';
}
elseif( $from === false ) // si le courriel fourni n'est pas valide
{
$errors[] = 'L\'adresse de courrier &eacute;lectronique n\'est pas valide.';
$from = filter_input( INPUT_POST, 'from', FILTER_SANITIZE_EMAIL );
}

$object = filter_input( INPUT_POST, 'object', FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_HIGH | FILTER_FLAG_ENCODE_LOW );
if( $object === NULL OR $object === false OR empty( $object ) OR $object === MAIL_OBJECT ) // si l'objet fourni est vide, invalide ou égale à la valeur par défaut
{
$errors[] = 'Vous devez renseigner l\'objet.';
}

/* pas besoin de nettoyer le message.
/ http://www.phpsecure.info/v2/article/MailHeadersInject.php
/ Logiquement, les parties message, To: et Subject: pourraient servir aussi à injecter quelque chose, mais la fonction mail()
/ filtre bien les deux dernières, et la première est le message, et à partir du moment où on a sauté une ligne dans l'envoi du mail,
/ c'est considéré comme du texte; le message ne saurait donc rester qu'un message.*/
$message = filter_input( INPUT_POST, 'message', FILTER_UNSAFE_RAW );
if( $message === NULL OR $message === false OR empty( $message ) OR $message === MAIL_MESSAGE ) // si le message fourni est vide ou égale à la valeur par défaut
{
$errors[] = 'Vous devez &eacute;crire un message.';
}

if( count( $errors ) === 0 ) // si il n'y a pas d'erreurs
{
if( mail( MAIL_TO, $object, $message, "From: $from\nReply-to: $from\n" ) ) // tentative d'envoi du message
{
$mailSent = true;
}
else // échec de l'envoi
{
$errors[] = 'Votre message n\'a pas &eacute;t&eacute; envoy&eacute;.';
}
}
}
else // le formulaire est affiché pour la première fois, avec les valeurs par défaut
{
$from = MAIL_FROM;
$object = MAIL_OBJECT;
$message = MAIL_MESSAGE;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="fr" xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Contact</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="content-language" content="fr" />
<style type="text/css">
html{ font-family:Geneva, Arial, Helvetica, sans-serif; margin:0; padding:0; font-size:.88em;}
body{ width:772px; margin:0 auto; padding:0; }
textarea{ width:772px; }
label{ display:block; font-weight:bold; }
p#welcome{ padding:10px 20px; border:1px dotted #00f; color:#00f; font-weight:bold; }
ul{ padding:10px 20px; border:1px dotted #f00; color:#f00; font-weight:bold; }

p#success{ padding:10px 20px; border:1px dotted #0f0; color:#0f0; font-weight:bold; }
p em{ display:block; font-weight:normal; }
</style>
</head>
<body>
<h1>Contact</h1>
<hr />
<?php
if( $mailSent === true ) // si le message a bien été envoyé, on affiche le récapitulatif
{
?>
<p id="success">Votre message a bien &eacute;t&eacute; envoy&eacute;.</p>
<p><strong>Courriel pour la r&eacute;ponse&nbsp;:</strong><br /><?php echo( $from ); ?></p>
<p><strong>Objet&nbsp;:</strong><br /><?php echo( $object ); ?></p>
<p><strong>Message&nbsp;:</strong><br /><?php echo( nl2br( htmlspecialchars( $message ) ) ); ?></p>
<?php
}
else // le formulaire est affiché pour la première fois ou le formulaire a été soumis mais contenait des erreurs
{
if( count( $errors ) !== 0 )
{
echo( "\t\t<ul>\n" );
foreach( $errors as $error )
{
echo( "\t\t\t<li>$error</li>\n" );
}
echo( "\t\t</ul>\n" );
}
else
{
echo( "\t\t<p id=\"welcome\"><em>Tous les champs sont obligatoires</em></p>\n" );
}
?>
<form id='contact' method="post" action="<?php echo( $_SERVER['REQUEST_URI'] ); ?>">
<p>
<label for="from">Courriel pour la r&eacute;ponse</label>
<input type="text" name="from" id="from" value="<?php echo( $from ); ?>" />
</p>
<p>
<label for="object">Objet</label>
<input type="text" name="object" id="object" value="<?php echo( $object ); ?>" />
</p>
<p>
<label for="message">Message</label>
<textarea name="message" id="message" rows="20" cols="80"><?php echo( $message ); ?></textarea>
</p>
<p>
<input type="reset" name="reset" value="Effacer" />
<input type="submit" name="send" value="Envoyer" />
</p>
</form>
<?php
}
?>
</body>
</html>


voici ce que j'ai fais pour rajouter les champs $tel, $postal et *nom :

<?php
define( 'MAIL_TO', 'monmail@monmail.com' ); //ajouter votre courriel
define( 'MAIL_FROM', '' ); // valeur par défaut
define( 'MAIL_OBJECT', 'Indiquez le sujet' ); // valeur par défaut
define( 'MAIL_MESSAGE', '' );
define( 'MAIL_TEL' , '');
define( 'MAIL_POSTAL', '' );
define( 'MAIL_NOM', '' );

$mailSent = false; // drapeau qui aiguille l'affichage du formulaire OU du récapitulatif
$errors = array(); // tableau des erreurs de saisie

if( filter_has_var( INPUT_POST, 'send' ) ) // le formulaire a été soumis avec le bouton [Envoyer]
{
$from = filter_input( INPUT_POST, 'from', FILTER_VALIDATE_EMAIL );
if( $from === NULL || $from === MAIL_FROM ) // si le courriel fourni est vide OU égale à la valeur par défaut
{
$errors[] = 'Vous devez renseigner votre adresse de courrier &eacute;lectronique.';
}
elseif( $from === false ) // si le courriel fourni n'est pas valide
{
$errors[] = 'L\'adresse de courrier &eacute;lectronique n\'est pas valide.';
$from = filter_input( INPUT_POST, 'from', FILTER_SANITIZE_EMAIL );
}

//le sujet du message
$sujet = filter_input( INPUT_POST, 'sujet', FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_HIGH | FILTER_FLAG_ENCODE_LOW );
if( $sujet === NULL OR $sujet === false OR empty( $sujet ) OR $sujet === MAIL_OBJECT ) // si l'objet fourni est vide, invalide ou égale à la valeur par défaut
{
$errors[] = 'Vous devez renseigner l\'objet.';
}
//le telephone
$tel = filter_input( INPUT_POST, 'tel', FILTER_UNSAFE_RAW );
if( $tel === NULL OR $tel === false OR empty( $tel ) OR $tel === MAIL_TEL )
{
$errors[] = 'Vous devez indiquer votre t&eacute;l&eacute;phone.';
}

// le nom
$nom = filter_input( INPUT_POST, 'nom', FILTER_UNSAFE_RAW );
if( $nom === NULL OR $nom === false OR empty( $nom ) OR $nom === MAIL_NOM )
{
$errors[] = 'Vous devez indiquer votre nom.';
}

//le code postal
$postal = filter_input( INPUT_POST, 'postal', FILTER_UNSAFE_RAW );
if( $postal === NULL OR $postal === false OR empty( $postal ) OR $postal === MAIL_POSTAL )
{
$errors[] = 'Vous devez indiquer votre code postal.';
}

$message = filter_input( INPUT_POST, 'message', FILTER_UNSAFE_RAW );
if( $message === NULL OR $message === false OR empty( $message ) OR $message === MAIL_MESSAGE ) // si le message fourni est vide ou égale à la valeur par défaut
{
$errors[] = 'Vous devez &eacute;crire un message.';
}


if( count( $errors ) === 0 ) // si il n'y a pas d'erreurs
{
if( mail( MAIL_TO, $sujet, $nom, $tel, $postal, $message, "From: $from\nReply-to: $from\n" ) ) // tentative d'envoi du message
{
$mailSent = true;
}
else // échec de l'envoi
{
$errors[] = 'Votre message n\'a pas &eacute;t&eacute; envoy&eacute;.';
}
}
}
else // le formulaire est affiché pour la première fois, avec les valeurs par défaut
{
$from = MAIL_FROM;
$sujet = MAIL_OBJECT;
$nom = MAIL_NOM;
$tel = MAIL_TEL;
$postal = MAIL_POSTAL;
$message = MAIL_MESSAGE;
}
?>

<style type="text/css">
label{ display:block; font-weight:bold; }
p#welcome{ padding:10px 20px; border:1px dotted #00f; color:#00f; font-weight:bold; }
p#success{ padding:10px 20px; border:1px dotted #0f0; color:#0f0; font-weight:bold; }
p em{ display:block; font-weight:normal; }
</style>

<h1>Contact particuliers </h1>
<hr />
<?php
if( $mailSent === true ) // si le message a bien été envoyé, on affiche le récapitulatif
{
?>
<p id="success">Votre message a bien &eacute;t&eacute; envoy&eacute;.</p>
<p><strong>Courriel pour la r&eacute;ponse&nbsp; :</strong><br /><?php echo( $from ); ?></p>
<p><strong>Votre demande :</strong><br /><?php echo( $sujet ); ?></p>
<p><strong>Votre nom :</strong><br /><?php echo( $nom ); ?></p>
<p><strong>Votre num&eacute;ro de t&eacute;l&eacute;phone :</strong><br /><?php echo( $tel ); ?></p>
<p><strong>Votre code postal :</strong><br /><?php echo( $postal ); ?></p>
<p><strong>Message&nbsp;:</strong><br /><?php echo( nl2br( htmlspecialchars( $message ) ) ); ?></p>
<?php
}
else // le formulaire est affiché pour la première fois ou le formulaire a été soumis mais contenait des erreurs
{
if( count( $errors ) !== 0 )
{
echo( "\t\t<ul>\n" );
foreach( $errors as $error )
{
echo( "\t\t\t<li>$error</li>\n" );
}
echo( "\t\t</ul>\n" );
}
else
{
echo( "\t\t<p id=\"welcome\"><em>Tous les champs sont obligatoires</em></p>\n" );
}
?>
<form id='contact' method="post" action="<?php echo( $_SERVER['REQUEST_URI'] ); ?>">
<table width="550" border="0" align="center" cellpadding="5" cellspacing="5">
<tr>
<td width="177" valign="top"><label for="sujet">Votre demande </label></td>
<td width="338"><input name="sujet" type="text" id="sujet" value="<?php echo( $sujet ); ?>" size="40" /></td>
</tr>
<tr>
<td valign="top"><label for="nom">Votre nom </label></td>
<td><input name="nom" type="text" id="nom" value="<?php echo( $nom ); ?>" size="40" /></td>
</tr>
<tr>
<td valign="top"><label for="from">Votre t&eacute;l&eacute;phone </label></td>
<td><input name="tel" type="text" id="tel" value="<?php echo( $tel ); ?>" size="40" /></td>
</tr>
<tr>
<td valign="top"><label for="from">Votre code postal </label></td>
<td><input name="postal" type="text" id="postal" value="<?php echo( $postal ); ?>" size="40" /></td>
</tr>
<tr>
<td valign="top"><label for="from">Votre email * </label></td>
<td><input name="from" type="text" id="from" value="<?php echo( $from ); ?>" size="40" /></td>
</tr>
<tr>
<td valign="top"><label for="from">Votre message </label></td>
<td><textarea name="message" id="message" cols="40" rows="6"><?php echo( $message ); ?></textarea></td>
</tr>
<tr>
<td valign="top">&nbsp;</td>
<td><input type="submit" name="send" value="Envoyer" /></td>
</tr>
<tr>
<td colspan="2" valign="top">
<p>* Veuillez entrer une adresse e-mail valide (de type vous@fournisseur.com).</p>
<p><small>Conformément à la loi Informatique et Libertés, vous disposez d’un droit d’accès et de rectification et de suppression des données vous concernant (art. 34 de la loi "Informatique et libertés"). SARL.</small></p>
</td>
</tr>
<tr>
<td valign="top">&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</form>
<?php
}
?>


merci pour votre aide :)

Titi

Ses derniers messages sur les forums

forum
dadamuse
$mailSent = false; // drapeau qui aiguille l'affichage du formulaire OU du récapitulatif
$nom = $_POST["nom"];
$tel= $_POST["tel"];
$postal= $_POST["postal"];
$message= $_POST["message"];
$m1="Bonjour $noms, votre email nous a bien été envoyé. Une réponse vous sera retournée au plus vite.

Pour rappel, voici les informations envoyées :
Votre nom : $nom
Votre téléphone : $tel
Votre code postal : $postal
Votre message : $message
A bientôt ! ";


ca y est enfin ! smiley

Par contre maintenant, je comprends que le script est incomplet : cad que ici :
if( mail( MAIL_TO, $sujet, $m1, "From: $from\nReply-to: $from\n" ) ) // tentative d'envoi du message


l'internaute recoit bien un mail de confirmation comme je l'ai souhaitémais que l'admin 'MAIL_TO' recoit un mail vide ...
dadamuse
et comment dois-je déclarer cette variable ?
(j'avoue que j'ai essayé pas mal de choses mais je crois que je n'ai pas encore la logique php)

ce que j’ai réussi le plus :

<?php
define( 'MAIL_TO', 'py@mezonet.com' ); //ajouter votre courriel
define( 'MAIL_FROM', '' ); // valeur par défaut
define( 'MAIL_OBJECT', 'Indiquez le sujet' ); // valeur par défaut
define( 'MAIL_MESSAGE', '' );
define( 'MAIL_TEL' , '');
define( 'MAIL_POSTAL', '' );
define( 'MAIL_NOM', '' );

$mailSent = false; // drapeau qui aiguille l'affichage du formulaire OU du récapitulatif
$m1='$noms, $tel et $postal. $message.';
$errors = array(); // tableau des erreurs de saisie

et ce que je recois dans mon mail :
$noms, $tel et $postal. $message.


j’y suis presque ! …
dadamuse
merci mais concretement que dois-je faire ? garder les 5 ou 4 parametres de base et envoyer les autres paramatres ailleurs dans une variable ???

j’ai essayé cela , ya pas de bug mais ca renvoit pas la variable $m1
if( count( $errors ) === 0 ) // si il n'y a pas d'erreurs
{
if( mail( MAIL_TO, $sujet, $m1, "From: $from\nReply-to: $from\n" ) ) // tentative d'envoi du message
{
$mailSent = true;
$m1="Bonjour $noms, voici votre téléphone : $tel et votre code postal : $postal.
Votre message : $message.";
}
else // échec de l'envoi


je débute ... smiley

Ses derniers commentaires de news

Aucun commentaire de news

Ses derniers commentaires de sites

Aucun commentaire de sites

Ses derniers commentaires de wall

Aucun commentaire wall
LoadingChargement en cours