Discussion:
null ou " " ?
(trop ancien pour répondre)
alainL
2010-06-26 08:18:56 UTC
Permalink
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
Olivier Miakinen
2010-06-26 12:47:10 UTC
Permalink
Bonjour,
Post by alainL
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).
Post by alainL
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.
Post by alainL
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.
Post by alainL
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
2010-06-26 21:13:34 UTC
Permalink
Post by Olivier Miakinen
.....
Post by alainL
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.
Merci.
Voilà ce que j'ai essayé:

if ((stristr($souhait,"http://"))||(stristr($souhait,"[link]"))) {
$to="adresse bidon";
}
else if ($origine!=="option1" && $origine!=="option2" &&
$origine!=="option3" && $origine!=="option4"){
$to="adresse bidon";
}
else $to="bonne adresse";

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 !)
Olivier Miakinen
2010-06-26 22:10:16 UTC
Permalink
Post by alainL
[...]
else if ($origine!=="option1" && $origine!=="option2" &&
$origine!=="option3" && $origine!=="option4"){
[...]
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>
Post by alainL
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
2010-06-28 15:35:29 UTC
Permalink
Post by Olivier Miakinen
switch ($origine) {
$to="bonne adresse";
break;
$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

Continuer la lecture sur narkive:
Loading...