Redirection en PHP ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 nov. 2005, 00:03

ben tu utilise $message ici:
mail($destinataire,$titre,$message,"From: $vemail");
MAIS tu ne définit son contenu que la ligne en dessous !

tu va avoir une belle erreur si tu ne l'a pas initialisée et dans le cas contraire (initialisation ok) tu ne va pas avoir le bon message dans ton mail :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 19 Messages

03 nov. 2005, 00:08

je vais te montrer la totalité de mon formulaire.php et je peux te rassurer il fonctionne tres bien :wink:
<?php
function formulaire($nom="",$email="",$sujet="",$destinataire="",$message="") {
}
if(!isset($nom)) { 
	formulaire();
}
else {
	$vnom=trim(htmlentities($_POST["nom"]));
	$vemail=trim(htmlentities($_POST["email"]));
	$vsujet=trim(htmlentities($_POST["sujet"]));
	if ($_POST["destinataire"]=="trotlolotte"){  
	$destinataire="[email protected]";
	}  
	elseif ($_POST["destinataire"]=="webmaster"){  
	$destinataire="[email protected]";
	} 
	else{
	echo"<body bgcolor=#FFD7EB text=#FF0000 font face=Verdana><p align=center><strong>Pas de Destinataire</strong><br /><em>Veuillez svp reculez d'une page (precedent) pour choisir un destinataire pour le message.</em></p></body>";
	}
	$vdestinataire=trim(htmlentities($_POST["destinataire"]));
	$vmessage=trim(htmlentities($_POST["message"]));
	$titre="Message venant du site de TrotLolotte";
	$message="Provenance : $HTTP_REFERER\n";
	$message.="Adresse IP : $REMOTE_ADDR,\n";
	$message.="Navigateur : $HTTP_USER_AGENT\n";
	$message.="nom : $vnom\n";
	$message.="email : $vemail\n";
	$message.="sujet : $vsujet\n";
	$message.="message : $vmessage\n";

	if (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-_.]?[0-9a-z])*\\.[a-z]{2,4}$",$vemail) && ($erreur<>1)){
	echo "<body bgcolor=#FFD7EB text=#FF0000 font face=Verdana><p align=center><strong>L'adresse Email n'est pas correcte</strong><br /><em>Veuillez svp reculez d'une page (precedent) pour entrez une adresse email correcte.</em></p></body>";
	$erreur=1;
	}
	if (empty($vnom) || empty($vemail) || empty($vsujet) || empty($vdestinataire) || empty($vmessage)) {
	echo "<body bgcolor=#FFD7EB text=#640032 font face=Verdana><p align=center><strong>Vous n avez pas complété toutes les zones</strong><br /><em>Veuillez svp reculez d'une page (precedent) pour finir de completer le formulaire de contact.</em></p></body>";
	$erreur=1;
	}
	if ($erreur==1) {
	formulaire($nom,$email,$sujet,$destinataire,$message);
	}
	else {
	mail($destinataire,$titre,$message,"From: $vemail");
	$message="<body bgcolor=#FFD7EB text=#640032 font face=Verdana>
	<p><strong>Félicitations votre message :</strong></p>
	<dl><dt><em>Nom</em> : <span>" . $vnom. "</span></dt>
	<dt><em>Email</em> : <span>" . $vemail. "</span></dt>
	<dt><em>Sujet</em> : <span>" . $vsujet. "</span></dt>
	<dt><em>Message</em> : <span>" . $vmessage. "</span></dt></dl>
	<p><strong>a bien été envoyé à :</strong> <span>" . $vdestinataire. "</span></p>
	<p>Nous vous remercions et nous essayerons de répondre dans les plus brefs délais.</p>
	<p> | <a href=\"index.html\" title=\"Retour à la page d Accueil\">Retour à la page d'Accueil</a> | <a href=\"contacts.html\" title=\"Retour à la page des Contacts\">Retour à la page des Contacts</a> | </p></body>";
   echo$message;
   }
} 
?>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 nov. 2005, 00:23

oui donc voila tu as initialisé $message avant avec:
..
..
$message.="email : $vemail\n";
$message.="sujet : $vsujet\n";
$message.="message : $vmessage\n"; 
donc oui ton mail va contenir ton message mais dans ce cas je ne vois pas l'interet d'affecter le message a une variable ($message) disant que tout s'est bien passé:
$message="<body bgcolor=#FFD7EB text=#640032 font face=Verdana>
<p><strong>Félicitations votre message :</strong></p> 
...
et de faire un echo juste apres ??
tu aurai pu afficher avec un echo de suite:
echo "<body bgcolor=#FFD7EB text=#640032 font face=Verdana>
<p><strong>Félicitations votre message :</strong></p> 
...
voir meme afficher en limitant l'appel a php:
<body bgcolor=#FFD7EB text=#640032 font face=Verdana>
<p><strong>Félicitations votre message :</strong></p>
<dl><dt><em>Nom</em> : <span><?echo $vnom;?> </span></dt>  
...
enfin ça prete a confusion, mais ça marchera dans tous les cas

:wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 19 Messages

03 nov. 2005, 00:33

Ca devient tres technique mais je comprend un minimum surtout que si cela te parait logique ya pas de raison de ne pas l'utiliser ^^
else {
	mail($destinataire,$titre,$message,"From: $vemail");
	echo "<body bgcolor=#FFD7EB text=#640032 font face=Verdana>
	<p><strong>Félicitations votre message :</strong></p>
	<dl><dt><em>Nom</em> : <span>" . $vnom. "</span></dt>
	<dt><em>Email</em> : <span>" . $vemail. "</span></dt>
	<dt><em>Sujet</em> : <span>" . $vsujet. "</span></dt>
	<dt><em>Message</em> : <span>" . $vmessage. "</span></dt></dl>
	<p><strong>a bien été envoyé à :</strong> <span>" . $vdestinataire. "</span></p>
	<p>Nous vous remercions et nous essayerons de répondre dans les plus brefs délais.</p>
	<p> | <a href=\"index.html\" title=\"Retour à la page d Accueil\">Retour à la page d'Accueil</a> | <a href=\"contacts.html\" title=\"Retour à la page des Contacts\">Retour à la page des Contacts</a> | </p></body>";
   }
tu voudrais donc dire que en changeant comme ceci ca serait plus logique ?

pas bon le message contient aussi le message envoyé :/

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 nov. 2005, 02:43

oui c'est certainement plus logique d'afficher ton message plustot que de l'affecter a une variable puis de l'afficher juste apres.

sinon le plus logique serai encore de mettre un peu d'ordre dans le code :wink: tu as beacoup de balises <body> pour une meme page. Tu devrai déclarer une seule fois en début de fichier puis y inclure ton script.

Voila ce que devrai donner ton dernier test (if) avec l'affichage du message:

<?
if ($erreur == 1) 
{
    formulaire($nom,$email,$sujet,$destinataire,$message);
} 
else 
{
    
	// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini (source de la doc)
    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
	$headers .= 'From: '.$vemail."\r\n";	
	
	if(mail($destinataire,$titre,$message,$headers))
	{
	?>
    <p><strong>Félicitations votre message :</strong></p>
    <dl><dt><em>Nom</em> : <span><? echo $vnom; ?></span></dt>
    <dt><em>Email</em>   : <span><? echo $vemail; ?></span></dt>
    <dt><em>Sujet</em>   : <span><? echo $vsujet; ?></span></dt>
    <dt><em>Message</em> : <span><? echo $vmessage; ?></span></dt></dl>
    <p><strong>a bien été envoyé à :</strong> <span><? echo $vdestinataire; ?></span></p>
    <p>Nous vous remercions et nous essayerons de répondre dans les plus brefs délais.</p>
    <p> | <a href="index.html" title="Retour à la page d Accueil">Retour à la page d'Accueil</a> | 
	<a href="contacts.html" title="Retour à la page des Contacts">Retour à la page des Contacts</a> | 
	</p>	
	<?
	}
	else 
	?>
	<p><strong>Erreur lors de l'envoi du mail.</strong></p>
	<?
}
j'ai sorti du code php le plus possible d'html (beaucoup d'affichage simple), puis un test sur la fonction mail() pour savoir si le mail a vraiment bien été envoyé et des en-tetes nottamment pour envoyer au format HTML, comme ça tu peut remettre un lien dans le corps du message vers ton site ou ailleur et avoir un meilleur rendu :wink: Pour plus dinfo va voir la doc (pour mail) exemple 4.
pas bon le message contient aussi le message envoyé :/
Euh ben oui tu demande de l'afficher...
".....<dt><em>Message</em> : <span>" . $vmessage. "</span></dt></dl>..."
Sinon je vois pas le probleme ?!

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute