Bonsoir,
Mon formulaire contient une liste (dont je suppose que la première
option est sélectionnée par défaut)
Le traitement récupère cette option $origine et l'intègre dans $message
qui m'est envoyé par mail...
$message="Origine : ,$origine,..."
En général, ça marche :-)
Mais il m'arrive de recevoir un mail dans lequel le champ prévu pour
$option est vide : "Origine : "
Comment se fait-ce ?? mais surtout comment tester cette "chaîne" ?
est-elle null, =="",==" " ???
Merci
alain
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
Bonjour,
Le 26/06/2010 10:18, alainL a écrit :
Mon formulaire contient une liste (dont je suppose que la première option est sélectionnée par défaut)
Ne rien supposer à priori de ce qui te vient de l'extérieur (même si c'est censé ne provenir que d'une page web à toi).
Le traitement récupère cette option $origine et l'intègre dans $message qui m'est envoyé par mail... $message="Origine : ,$origine,..." En général, ça marche :-)
Sauf quand ce sont des spammeurs qui t'écrivent.
Mais il m'arrive de recevoir un mail dans lequel le champ prévu pour $option est vide : "Origine : "
Comment se fait-ce ??
Très certainement, c'est un pirate qui essaye d'utiliser ton script pour spammer.
mais surtout comment tester cette "chaîne" ? est-elle null, =="",==" " ???
C'est forcément une chaîne de caractères, comme tout ce qui transite dans une requête HTTP. À toi de vérifier que cette chaîne est correcte avant de faire tout autre traitement. Et bien sûr tu ne dois pas tester les valeurs hypothétiques que peuvent t'envoyer tous les spammeurs de la terre, mais seulement les valeurs exactes que tu as toi-même prévues.
-- Olivier Miakinen
Bonjour,
Le 26/06/2010 10:18, alainL a écrit :
Mon formulaire contient une liste (dont je suppose que la première
option est sélectionnée par défaut)
Ne rien supposer à priori de ce qui te vient de l'extérieur (même si
c'est censé ne provenir que d'une page web à toi).
Le traitement récupère cette option $origine et l'intègre dans $message
qui m'est envoyé par mail...
$message="Origine : ,$origine,..."
En général, ça marche :-)
Sauf quand ce sont des spammeurs qui t'écrivent.
Mais il m'arrive de recevoir un mail dans lequel le champ prévu pour
$option est vide : "Origine : "
Comment se fait-ce ??
Très certainement, c'est un pirate qui essaye d'utiliser ton script pour
spammer.
mais surtout comment tester cette "chaîne" ?
est-elle null, =="",==" " ???
C'est forcément une chaîne de caractères, comme tout ce qui transite
dans une requête HTTP. À toi de vérifier que cette chaîne est correcte
avant de faire tout autre traitement. Et bien sûr tu ne dois pas tester
les valeurs hypothétiques que peuvent t'envoyer tous les spammeurs de la
terre, mais seulement les valeurs exactes que tu as toi-même prévues.
Mon formulaire contient une liste (dont je suppose que la première option est sélectionnée par défaut)
Ne rien supposer à priori de ce qui te vient de l'extérieur (même si c'est censé ne provenir que d'une page web à toi).
Le traitement récupère cette option $origine et l'intègre dans $message qui m'est envoyé par mail... $message="Origine : ,$origine,..." En général, ça marche :-)
Sauf quand ce sont des spammeurs qui t'écrivent.
Mais il m'arrive de recevoir un mail dans lequel le champ prévu pour $option est vide : "Origine : "
Comment se fait-ce ??
Très certainement, c'est un pirate qui essaye d'utiliser ton script pour spammer.
mais surtout comment tester cette "chaîne" ? est-elle null, =="",==" " ???
C'est forcément une chaîne de caractères, comme tout ce qui transite dans une requête HTTP. À toi de vérifier que cette chaîne est correcte avant de faire tout autre traitement. Et bien sûr tu ne dois pas tester les valeurs hypothétiques que peuvent t'envoyer tous les spammeurs de la terre, mais seulement les valeurs exactes que tu as toi-même prévues.
-- Olivier Miakinen
alainL
Le 26/06/2010 14:47, Olivier Miakinen a écrit :
.....
mais surtout comment tester cette "chaîne" ? est-elle null, =="",==" " ???
C'est forcément une chaîne de caractères, comme tout ce qui transite dans une requête HTTP. À toi de vérifier que cette chaîne est correcte avant de faire tout autre traitement. Et bien sûr tu ne dois pas tester les valeurs hypothétiques que peuvent t'envoyer tous les spammeurs de la terre, mais seulement les valeurs exactes que tu as toi-même prévues.
Ca semble marcher mais je voulais utiliser !=== qui est refusé. D'autre part, mon code qui reprend une par une les 4 options doit pouvoir se simplifier ? (pour le cas où il y aurait plus d'options !)
Le 26/06/2010 14:47, Olivier Miakinen a écrit :
.....
mais surtout comment tester cette "chaîne" ?
est-elle null, =="",==" " ???
C'est forcément une chaîne de caractères, comme tout ce qui transite
dans une requête HTTP. À toi de vérifier que cette chaîne est correcte
avant de faire tout autre traitement. Et bien sûr tu ne dois pas tester
les valeurs hypothétiques que peuvent t'envoyer tous les spammeurs de la
terre, mais seulement les valeurs exactes que tu as toi-même prévues.
Ca semble marcher mais je voulais utiliser !=== qui est refusé.
D'autre part, mon code qui reprend une par une les 4 options doit
pouvoir se simplifier ? (pour le cas où il y aurait plus d'options !)
mais surtout comment tester cette "chaîne" ? est-elle null, =="",==" " ???
C'est forcément une chaîne de caractères, comme tout ce qui transite dans une requête HTTP. À toi de vérifier que cette chaîne est correcte avant de faire tout autre traitement. Et bien sûr tu ne dois pas tester les valeurs hypothétiques que peuvent t'envoyer tous les spammeurs de la terre, mais seulement les valeurs exactes que tu as toi-même prévues.
Ca semble marcher mais je voulais utiliser !=== qui est refusé. D'autre part, mon code qui reprend une par une les 4 options doit pouvoir se simplifier ? (pour le cas où il y aurait plus d'options !)
Ca semble marcher mais je voulais utiliser !=== qui est refusé.
Hahaha ! Tu as essayé !==== ou !===== ? :-D
La doc, la doc, la doc, toujours la doc... <http://fr.php.net/manual/fr/language.operators.comparison.php>
D'autre part, mon code qui reprend une par une les 4 options doit pouvoir se simplifier ? (pour le cas où il y aurait plus d'options !)
Comment dirai-je... euh... la doc ? <http://fr.php.net/manual/fr/control-structures.switch.php>
switch ($origine) { case "option1": case "option2": case "option3": case "option4": $to="bonne adresse"; break; default: $to="adresse bidon"; /* mieux : exit() ou die() */ break; }
-- Olivier Miakinen
Pascal
Olivier Miakinen a écrit :
switch ($origine) { case "option1": case "option2": case "option3": case "option4": $to="bonne adresse"; break; default: $to="adresse bidon"; /* mieux : exit() ou die() */ break; }
J'ajouterais une alternative à cette réponse, l'utilisation d'un tableau d'options et le test de la valeur retournée du formulaire par rapport à celles déclarées possibles. D'autant que ce tableau a des chances de pré-exister pour automatiser la construction des options dans la liste du formulaire.
<?php $options = array('opt1', 'opt2', ...); // ou résultat requête BDD $is_option = in_array($origine, $options); // test d'existence if ($is_option) { // traitements selon résultat du test // confirmation + envoi mail } else { // alerte + sortie } ?>
Cordialement, Pascal
Olivier Miakinen a écrit :
switch ($origine) {
case "option1":
case "option2":
case "option3":
case "option4":
$to="bonne adresse";
break;
default:
$to="adresse bidon"; /* mieux : exit() ou die() */
break;
}
J'ajouterais une alternative à cette réponse, l'utilisation d'un tableau
d'options et le test de la valeur retournée du formulaire par rapport à
celles déclarées possibles.
D'autant que ce tableau a des chances de pré-exister pour automatiser la
construction des options dans la liste du formulaire.
<?php
$options = array('opt1', 'opt2', ...); // ou résultat requête BDD
$is_option = in_array($origine, $options); // test d'existence
if ($is_option) { // traitements selon résultat du test
// confirmation + envoi mail
} else {
// alerte + sortie
}
?>
switch ($origine) { case "option1": case "option2": case "option3": case "option4": $to="bonne adresse"; break; default: $to="adresse bidon"; /* mieux : exit() ou die() */ break; }
J'ajouterais une alternative à cette réponse, l'utilisation d'un tableau d'options et le test de la valeur retournée du formulaire par rapport à celles déclarées possibles. D'autant que ce tableau a des chances de pré-exister pour automatiser la construction des options dans la liste du formulaire.
<?php $options = array('opt1', 'opt2', ...); // ou résultat requête BDD $is_option = in_array($origine, $options); // test d'existence if ($is_option) { // traitements selon résultat du test // confirmation + envoi mail } else { // alerte + sortie } ?>