Probleme avec formulaire

Eléphant du PHP | 259 Messages

04 août 2007, 12:16

Bonjour

je vous explique : j'ai sur mon site un formulaire de contact sur un seul page, quand on poste, un petit hidden prouve que l'on a posté et une autre partie du script s'exécute

voici un morceau de mon code :
if(empty($post))
	{
	?>
        formulaire de contact
	<?php
	}
else
	{
        $message=$_POST['message'];
...

	protect_mail($mail);
	protect_mail($objet);
	
        $message=str_replace("\r\n","<br>",$message);
	$headers= ....

	mail("XXXXXXXX", "$objet", "$message", "$headers");
}
mais quand je recoit mon mail, je vois par exemple dans le message :
essai\r\n\r\n++
pourquoi je ne vois pas des sauts de ligne ( <br> )

note : dans les headers de mon mail je le met en html
$headers.="Content-Type: text/html; charset=\"iso-8859-1\"";

merci
l'hébergeur gratuit que j'utilisais: http://www.freeheberg.com (pas de limitte de débit, BP, 1à10Go, bdd mysql illimitées )
mainteant je suis chez OVH, payant mais plus adapté à de gros sites

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 août 2007, 12:34

if(empty($post)) 
C'est une variable à toi $post ? ou c'est un $_POST complètement loupé ? :)
$message=str_replace("\r\n","<br>",$message); 
Pourquoi ne pas utiliser nl2br() ?
mail("XXXXXXXX", "$objet", "$message", "$headers");
Pourquoi inclure tes variables dans des chaines ? Sortez vos variables !! PHP est obligé de parser ta chaine pour voir s'il trouve une variable.. donne lui directement la variable :)
mail("XXXXXXXX", $objet, $message, $headers);
Bon et sinon pour tes \r\n qui apparaissent, tu lui fait absolument rien d'autre à ta variable $message ? Si tu l'affiches avant de l'envoyer ça donner quoi ?
echo '<pre>';
echo htmlentities($message);
echo '</pre>';
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 259 Messages

04 août 2007, 12:55

$post sert a la page découpée en deux, elle vient d'un $_POST et si elle est vide on affiche le formulaire, sinon on envoi le mail ou affiche un message d'erreur

et avec ta derniere astuce j'ai par exemple ceci : essai\r\n\r\nessai\r\n\r\nessai

alors que j'avais des sauts de ligne

sinon merci pour tes idées d'optimisation de code
l'hébergeur gratuit que j'utilisais: http://www.freeheberg.com (pas de limitte de débit, BP, 1à10Go, bdd mysql illimitées )
mainteant je suis chez OVH, payant mais plus adapté à de gros sites

Eléphant du PHP | 246 Messages

04 août 2007, 13:50

J'ai un peu repris ton code pour voir avec le mien et ça marche bien, voici ce que j'ai :
			$to = "monadresse@email";
			$objet= "test";
			$message =  $_POST['message'];    	   
        	$message=str_replace("\r\n","<br>",$message);
    		$headers.="Content-Type: text/html; charset=\"iso-8859-1\""; 
			mail($to, $objet, $message, $headers); 

Eléphant du PHP | 259 Messages

05 août 2007, 12:50

salut

sa marche ! mais cela ne vient pas du code que je vous ai passé mais d'une fonction de protection qui empeche les attaques et qui était passée avant

voila

++
l'hébergeur gratuit que j'utilisais: http://www.freeheberg.com (pas de limitte de débit, BP, 1à10Go, bdd mysql illimitées )
mainteant je suis chez OVH, payant mais plus adapté à de gros sites

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 août 2007, 14:12

Modération :
yuuzhantar, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...