Comment éviter les antislashes dans les messages issues de mon formulaire?

Nouveau WRInaute
Bonjour, après de m'avoir cassé la tête pendant plusieurs jours sans avoir trouvé la solution, je suis dans la nécessité de demander de l'aide.
Pour le traitement de mon formulaire html j'utilise un script en php, simple mais assez efficace:
<?php
$TO = "contact-form@monsite.com";
$h = "From: " . $TO;
$message = "";
$subject = "Request";
while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}
mail($TO, $subject, $message, $h);
Header("Location: http://www.monsite.com/contact/confirmation.html");
?>

Le Problème: dans le message issue du dit formulaire il y à des antislashes devant chaque apostrophe et guillemets (exemple: aujourd/'hui).
Pour quelqu'un qui connaît le php, peut-être, c'est une question banale mais, Comment puis je faire pour enlever les antislashes?
Merci infiniment des votres aides.
 
Nouveau WRInaute
Merci beaucoup Tyv, ça marche très bien. Je regrette de ne pas avoir demandé du l'aide avant, tout le temp que j'ai perdu sur ce sujet. Merci encore.
J'ai été sur des différents sites comme php.net, phpcs, php-astux, etc, etc; des forums WRI et d'autres, ils font tous référence à la fonction stripslashes() mais sans expliquer clairement comment et où la utiliser. Je suis sur que maintenant, et grâce à toi, des néophytes de php (comme moi) trouveront des solutions aux mêmes problèmes.
 
Nouveau WRInaute
Bonjour, si j'ai bien compris il faut il impérativement avoir une base de données pour désactiver les magic quotes? si non, peut-on placer le code mentioné sur sitepoint.com dans formmail.php?
Merci.
 
WRInaute occasionnel
non, c'est pas vraiment ça (c'est indépendant de la base de données): les backslashes sont automatiquement ajoutés lorsque dans la configuration de php l'option magic quotes est activée. En php 4 cette option avait comme but de protéger automatiquement les entrées des GET et POST est ainsi limiter les risques d'injection sql.
En php5 cette option est désactivée par défaut, en php6 il me semble que cette fonction n'existera plus (perso tant mieux :D ).

edit: Il est possible de le désactiver soit:
- en modifiant la configuration de php sur ton serveur (si tu es sur un dédié)
- en utilisant la fonction ini_set de php ou SetEnv dans un .htaccess qui permettent de modifier (selon les hébergeurs) certaines options de php.

Par contre, il faut bien veiller à "échapper" correctement les chaines qui doivent être traitées en base de données (un exemple classique d'injection sql).
 
Nouveau WRInaute
Merci Tyv pour l'explication et à Spout aussi, maintenant tout est beaucoup plus claire pour moi.
Pour le moment je n'ai pas besoin d'une base de données, dans le future surement oui. J'ai donc intérêt de apprendre davantage php.
Merci.
 
Discussions similaires
Haut