antislash dans les mails issus de textarea

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : antislash dans les mails issus de textarea

par Boro64 » 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:

par Ryle » 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) :)

par Boro64 » 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

par Ultim4T0m » 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.

antislash dans les mails issus de textarea

par Boro64 » 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