antislash dans les mails issus de textarea

Eléphant du PHP | 250 Messages

21 déc. 2006, 21:40

Bonsoir,
voilà j'ai un bête problème :?
Lorsque je reçois les mails à partir de mes formulaires, dans les textes issus des texterea pour les commentaires, les ' sont systematiquement précédés de\\\ (oui oui: 3 fois \)
Je suis certain que c'est dû au fait que ma page est generé en php, mais je ne vois pas comment supprimer cette apparence (enfin, c'est surtout à mes clients que je pense..)
Une précision sans doute utile, mes mails ne sont pas au format html.... :oops:
Vous auriez une simple piste?
Merci d'avance
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."

Eléphant du PHP | 445 Messages

21 déc. 2006, 22:23

Petit soucis dans avec l'utilisation de la fonction addslashes ;)

Montre nous un peu de code, on ne pourra pas beaucoup t'aider sans rien.
LLDC
Ulti

Eléphant du PHP | 250 Messages

22 déc. 2006, 09:39

Mais où avais je la tête! :roll:
Voici donc le script:
$choix = $_POST['choix'];
	$val = $_POST['lib'];
	$val1 = $_POST['web'];
	$name = $_POST['name'];
	$email = $_POST['email'];
	$from = $_POST['email'];
	$point = strpos($email,".");
	$aroba = strpos($email,"@");
	$auto_mail = $_POST['auto_mail'];
	$sujet = $_POST['title'];
	$adresse_destinataire = 'libraires@librairie-alinea-bayonne .com';
	$adresse_destinataire2 = '[email protected]';
	$objet = 'Question(s) Client Librairie Alinea';
	$message = addslashes(
	"Nom:".$_POST['name'].
	"\n Email: ".$_POST['email'].
	"\n Sujet: " .$_POST['title'].
	"\n Message: " .$_POST['comments']);
	
if (empty($name))
{
print ("<center><b>Le nom doit &ecirc;tre renseign&eacute;</b></center>");
die();
}

if (empty($email))
{
print ("<center><b>Votre email doit &ecirc;tre renseign&eacute;</b></center>");
die();
}

if($point=='')
{
print ("<center><b>Votre email doit comporter un <b>point</b></b></center>");
die();
}
elseif($aroba=='')
{
print ("<center><b>Votre email doit comporter un <b>'@'</b></b></center>");
die();
} 


if($choix == 'lib')
{

	mail($adresse_destinataire,$objet,$message,$from);
	print('<br /><br/><center><b>Votre commande a été envoyée avec succès !</b>
	<br />
	<br />
	Cliquez <a href="index.html?page=index"><b>ici</b></a> pour retourner à la page d\'accueil, ou 
				<a href="contacts.php?page=contacts"><b>ici</b></a> pour retourner à la page 
				de contacts.</center>');
	die();
	
}
elseif($choix == 'web')
{	
	mail($adresse_destinataire2, $objet, $message,$from);
	print('<br /><br/><center><b>Votre commande a été envoyée avec succès !</b>
	<br />
	<br />
	Cliquez <a href="index.html?page=index"><b>ici</b></a> pour retourner à la page d\'accueil, ou 
				<a href="contacts.php?page=contacts"><b>ici</b></a> pour retourner à la page 
				de contacts.</center>');
exit();

}
?>
Pardon pour cet oubli et à bientôt...et merci d'avance
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."

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

22 déc. 2006, 12:19

En fait, dans la configuration de php par défaut (du moins me semble que c'est par défaut), lorsque tu envois des données depuis un formulaire, il va automatiquement protéger les apostrophes d'un antislash pour te permettre d'insérer ces chaines en base directement. Les apostrophes deviennent donc : \'

Du coup, lorsque tu fais appelle à la fonction addslashes() tu demande à explicitement php de protéger les caractères tels que \ et '. Il rajoute un slash devant chaque ce qui te donne ton \\\'

Il te faudrait donc enlever le addslashes() et ajouter un stripslashes() pour retirer ceux mis en place par défaut sur les variables que tu récupères (là où c'est utile, vu que tu n'auras pas d'apostrophes dans un mail par ex) :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 250 Messages

22 déc. 2006, 12:59

Waouhhh...Nickel ! Merci Ryle et Truc... D'où ma perplexité devant le chemin qui m'attend, moi pôvre embryon
Merci beaucoup pour vos avis et conseils
Bonne journée et à bientôt
( je mets le topic en résolu!) :wink:
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."