Version complète: sur le forum Webmaster Hub : encore le header
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
jdw
Bonjour, je cherche depuis quelques heures a résoudre un petit problème, en vain......

(Avant cela marchait), suite à l'envoie de mail à partir d'un formulaire, je renvoyais (header) vers une page de réponse positive ou négative si cela avait fonctionné ou non.

Depuis peu, je travaille avec Expression Web et (je ne sais pas si c'est du à cela), je reçois une page blanche suite à l'envoie du formulaire (par dépis, j'ai remis un echo pour que cela soit plus sympa pour le visiteur).

Voici mon code
CODE
<?php
$urlp = "http://www.pierreetsol/Pages/Info/reponse.htm";
$nom=$HTTP_POST_VARS['nom'];
$mail=$HTTP_POST_VARS['email'];
$objet=$HTTP_POST_VARS['produit'];
$message .= "Nom : {$_POST['nom']} Prénom : {$_POST['prenom']}\nRue : {$_POST['rue']}\n";
$message .= "Code postale : {$_POST['cp']} Ville : {$_POST['ville']}\nPays : {$_POST['pays']}\n";
$message .= "Téléphone :{$_POST['tel']} Fax : {$_POST['fax']}\nemail : {$_POST['email']}\n";
$message .= "Produit : {$_POST['produit']} Dimensions : {$_POST['dimension']}\n";
$message .= "Couleur : {$_POST['couleur']} Finition : {$_POST['finition']}\nUsage : {$_POST['usage']}\n";
$message .= "Quantité : {$_POST['quantite']}\nConditionnement : {$_POST['conditionnement']}\nDate de Livraison probable : {$_POST['date']}\n";
$message .= "Commentaires : {$_POST['commentaire']}\n";

/////voici la version Mine
$headers = "MIME-Version: 1.0\r\n";

//////ici on détermine le mail en format text
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";

////ici on détermine l'expediteur et l'adresse de réponse
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP";

$MailHeader = "From: $mail"; //adresse email qui va figurer dans le champ "expéditeur" du email et qui peut être remplacé par la variable "$champx" ("$champ3").



$subject="$objet";
$destinataire="com_AT_pierreetsol.com";
$destinataire2="sec_AT_pierreetsol.com";
$destinataire3="pierreetsol_AT_gmail.com";
$destinataire4=$HTTP_POST_VARS['email'];

$body="$message";
mail($destinataire2, $subject, $body, $MailHeader);
mail($destinataire3, $subject, $body, $MailHeader);
mail($destinataire4, $subject, $body, $MailHeader);
if (mail($destinataire2,$subject,$body,$Mailheader)) {
echo "Votre demande a été envoyée, Merci";
header("Location:http://www.pierreetsol.com/Pages/Info/reponse.htm");
////header("location: $urlp"); C'était un essai
} else {
echo "Une erreur s'est produite";
}
?>


Voyez-vous l'erreur??? merci de vérifier à http://www.pierreetsol.com/Pages/Info/contact.htm si cela vous fait la même chose

Merci

A++

JDW
iNCiTE Web
On ne peut plus voir l'erreur, tu as un mis un ECHO et donc le Header ne peut plus fonctionner (aucune sortie ne doit être effectuée avant un envoi d'entêtes)
jdw
Bonjour,

Merci pour le retour, j'ai vu aussi un test_AT_test.com, jen e sais pas si c'est vous.

Je viens de mettre les //// devant echo et cela ne fonctionne toujours pas chez moi??????????????

Quid? je peux attendre un petit peu, mais je vais devoir enlever les //// pour que mes visiteurs est au moins une réponse

A++

JDW
iNCiTE Web
Oui c'est moi...

Par contre pourquoi vouloir faire une redirection via header ? dans le script traitement.php tu peux choisir d'afficher du texte en fonction du résultat de l'envoi de mail non ? (il faudra que ta page reponse soit en .php dans ce cas)
jdw
Rebonjour,

Pour comprendre : "dans le script traitement.php tu peux choisir d'afficher du texte en fonction du résultat de l'envoi de mail non ?" et oui, c'est pourquoi j'utilise un echo pour une réponse, mais j'aimerais de loin envoyer une page,.... est si je remplace la page reponse.htm par reponse. php cela ne marche toujours pas

A++

Jess
iNCiTE Web
Comme le header ne fonctionne pas pour une raison que j'ignore (faudrait que je me plonge dans le code complet), je te proposais de faire tes traitements dans la page reponse.htm (à renommer reponse.php et en changeant le action du formulaire de contact), et le script qui est fait dans traitement.php tu le fais au debut de reponse.php, capito ? tu testes si c'est bien parti etc
Et pourquoi tu veux *absolument* envoyer une page ?
jdw
Bonjour,

ce que j'ai fait, voici le nouveau code

<?php
$urlp = "http://www.pierreetsol/Pages/Info/reponse.htm";
$nom=$HTTP_POST_VARS['nom'];
$mail=$HTTP_POST_VARS['email'];
$objet=$HTTP_POST_VARS['produit'];
$message .= "Nom : {$_POST['nom']} Prénom : {$_POST['prenom']}\nRue : {$_POST['rue']}\n";
$message .= "Code postale : {$_POST['cp']} Ville : {$_POST['ville']}\nPays : {$_POST['pays']}\n";
$message .= "Téléphone :{$_POST['tel']} Fax : {$_POST['fax']}\nemail : {$_POST['email']}\n";
$message .= "Produit : {$_POST['produit']} Dimensions : {$_POST['dimension']}\n";
$message .= "Couleur : {$_POST['couleur']} Finition : {$_POST['finition']}\nUsage : {$_POST['usage']}\n";
$message .= "Quantité : {$_POST['quantite']}\nConditionnement : {$_POST['conditionnement']}\nDate de Livraison probable : {$_POST['date']}\n";
$message .= "Commentaires : {$_POST['commentaire']}\n";

/////voici la version Mine
$headers = "MIME-Version: 1.0\r\n";

//////ici on détermine le mail en format text
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";

////ici on détermine l'expediteur et l'adresse de réponse
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP";

$MailHeader = "From: $mail"; //adresse email qui va figurer dans le champ "expéditeur" du email et qui peut être remplacé par la variable "$champx" ("$champ3").



$subject="$objet";
$destinataire="com_AT_pierreetsol.com";
$destinataire2="sec_AT_pierreetsol.com";
$destinataire3="pierreetsol_AT_gmail.com";
$destinataire4=$HTTP_POST_VARS['email'];

$body="$message";
mail($destinataire2, $subject, $body, $MailHeader);
mail($destinataire3, $subject, $body, $MailHeader);
mail($destinataire4, $subject, $body, $MailHeader);
if (mail($destinataire2,$subject,$body,$Mailheader)) {
////echo "Votre demande a été envoyée, Merci";
header("Location:http://www.pierreetsol.com/Pages/Info/reponse.php");
////header("location: $urlp"); C'était un essai
} else {
echo "Une erreur s'est produite";
}
?>

et j'ai renommé réponse en .php

en vain..... toujours une page blanche

Aussi, j'aimarais envoyer une page "réponse" "positive" pour leur assurer le professionalisme du site et que le visiteur continue à suivre les liens s'il le souhaite, sans devoir faire un "back"


A++

JDW


mais cela donne
iNCiTE Web
Non tu ne comprends pas ce que je veux dire...
-Ta page reponse.htm tu l'appelles reponse.php
-Au début de reponse.php, tu ajoutes le code de traitement.php (en virant le header bien sûr)

Donc cela te permet d'afficher un résultat OK ou pas, puis l'affichage normal ensuite...
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.