Sortie de script involontaire

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 : Sortie de script involontaire

par Ryle » 04 mars 2008, 18:20

Et pourquoi vouloir à tout prix simplifier et ne pas nous donner le morceau de code réel qui vraissemblablement pose problème ? (pas tout le code, mais juste la partie concernée).

Ce serait sans doute beaucoup plus simple pour te demander de tester telle ou telle valeur ou te dire "il manque une parenthese autour d'un OU, du coup la condition est lue comme ci au lieu de comme ça..." :)

On veut du concret, avec de vraies valeurs ronthoudjiou ! ;)

par Anémone » 04 mars 2008, 17:32

Il se trouve justement que rien de ce que je mets "en dessous hors de la condition" ne s'effectue. L'erreur viendrait donc d'ailleurs? Bon je vais tout revérifier,
Merci de m'avoir répondu,

Bien cordialement,


Anémone

par d0m » 04 mars 2008, 17:26

Eh bien tel quel tu restes dans le script,
if ($condition && $autrecondition)
{echo "les 2 conditions sont vérifiées";} 
en effet si les 2 sont vraies, le message s'affiche, sinon il ne s'affiche pas.
Mais le script ne s'arrête dans aucun des cas puisque tu ne l'as pas explicitement spécifié.
Mais tous ce que tu mettras en dessous hors de la condition s'effectuera.

Tu n'as rien à faire pour rester dans le script puisque tu n'as ni redirection, ni exit(),...

par Anémone » 04 mars 2008, 17:21

C'est bien une simplification de mon code, alors je précise celui-ci:
if (!isset($condition))
{echo "la condition n'est pas vérifiée";
$condition = NULL;
}
if (!isset($autrecondition))
{echo "l'autre condition n'est pas vérifiée";
$autrecondition = NULL;
}
if ($condition && $autrecondition)
{echo "les 2 conditions sont vérifiées";}
else
{ //Rien du tout, si l'une ou l'autre des conditions n'est pas vérifiée, le script s'arrête, et ce n'est pas 
//ce que je veux
ET à y bien réfléchir, je ne peux pas vérifier si ($condition OR $autrecondition) et changer l'ordre des instructions; j'ai besoin que le script s'exécute dans cet ordre

par h0_noMan » 04 mars 2008, 17:03

Perso, j'ai du mal a te comprendre.

Essaie d'effectuer une table, en indiquant les sorties voulues en fonction des conditions.

Code : Tout sélectionner

┌──────────┬──────────┬─────────┐ │ COND_1 │ COND_2 │ SORTIE │ ├──────────┼──────────┼─────────┤ │ faux │ faux │ .... │ │ faux │ vrai │ .... │ │ vrai │ faux │ .... │ │ faux │ faux │ .... │ └──────────┴──────────┴─────────┘

par Ryle » 04 mars 2008, 17:02

Est-ce le code que tu utilises réellement ou est-ce juste une simplification de celui-ci ?

La valeur NULL est interprétée comme fausse par php. Ainsi ton premier code affichera toujours la chaine "Rien", ce n'est même pas la peine d'aller chercher plus loin...

Ensuite, je pense que php est suffisament digne de confiance en ce qui concerne ce genre d'opération pour ne rentrer dans ton que si tes conditions A ET B sont vraies et pas dans le cas ou l'une, ou l'autre, ou les deux sont fausse.

Donc à ta place, c'est sur la véritable valeur de mes conditions que je m'interrogerais et à mon avis, si tu rentres dans le if() et pas dans le else, c'est qu'elles ne sont ni nulle, ni fausse. Le mieux pour t'en convaincre est sans doute de les afficher avec un echo avant le if :
echo "Condition A : " . ($conditionA) ."<br>";
echo "Condition B : " . ($conditionB) ."<br>";
Si la condition est vraie, tu auras un 1, si elle est nulle ou fausse, tu n'auras pas de valeur...

par Anémone » 04 mars 2008, 16:43

Non, ce n'est pas exactement le souci.
Lorsque ni $condition ni $autrecondition ne prennent la valeur NULL, "Hello world" s'imprime, mais si l'une ou l'autre prend la valeur NULL, "Rien" ne s'imprime pas, je quitte le script et c'est bien ce qui m'ennuie.
Ou alors j'inverse les instructions. "Rien" s'imprime si $condition ou $autrecondition prend la valeur NULL, et "Hello world" s'imprime dans le cas contraire, soit:
$condition=NULL;
$autrecondition=NULL;
if ($condition OR $autrecondition)
{echo "Rien!;}
else
{echo "Hello, world";}
Est-ce ce que tu me suggères?

Re: Sortie de script involontaire

par h0_noMan » 04 mars 2008, 16:22

Comment faire pour rester dans le script, quand bien même l'une OU l'autre de ces 2 variables prendrait-elle la valeur NULL?
Merci
Tu l'as dit toi même.

Sortie de script involontaire

par Anémone » 04 mars 2008, 16:19

Bonjour,

Désolée, il y a eu un raté, une première partie de ce message est peut-être déjà partie.
Bon, voila le souci:
$condition=NULL;
$autrecondition=NULL;
if ($condition && $autrecondition)
{echo "Hello world";}
else
{echo "Rien"} // Rien en effet, je sors du script si $condition ou $autrecondition prend la valeur NULL
Comment faire pour rester dans le script, quand bien même l'une ou l'autre de ces 2 variables prendrait-elle la valeur NULL?
Merci