fredrick Posté 26 Mai 2006 Posté 26 Mai 2006 Bonjour, j'aimerais savoir la signification en français de ce bout de code. Merci if((!@isset($_SESSION['pseudo'])) || ($_SESSION['pseudo']=="")){ c'est le !@isset qui me dérange.
Vincent Posté 26 Mai 2006 Posté 26 Mai 2006 (modifié) ! --> pas egal @ --> pour eviter d'afficher les messages d'erreur et autre warning (si par exemple la variable de session pseudo n'est pas définie) Modifié 26 Mai 2006 par Vincent
captain_torche Posté 26 Mai 2006 Posté 26 Mai 2006 isset : si la variable est définie ! : NOT !isset : si la variable n'est pas définie @ : empêche l'affichage éventuel d'un message d'erreur PS : Vincent, pas égal s'écrit != (NOT equal)
Reivilo Posté 26 Mai 2006 Posté 26 Mai 2006 (modifié) SI la variable $_SESSION['pseudo'] n'existe pas OU si elle est vide FAIRE : isset() : retourne true si la variable existe. !isset() retourne true si la variable n'existe pas. Le @ évite les messages d'erreurs (inutile ici mais je peux me tromper). N'oublie pas qu'il existe une excellente doc edit: Heureusement que le wifi a laché deux fois :-° . Sympa l'édition rapide. Modifié 26 Mai 2006 par Reivilo
fredrick Posté 26 Mai 2006 Auteur Posté 26 Mai 2006 Un grand merci à tous. On en apprend tous les jours lol Bonne journée, Fred
Anonymus Posté 26 Mai 2006 Posté 26 Mai 2006 Sauf que... Le arobase sert à ne pas afficher l'erreur que pourrait retourner la fonction. Mais 'isset' ne retourne jamais d'erreur. Donc le arobase ne sert à rien.
Bourinho Posté 27 Mai 2006 Posté 27 Mai 2006 (modifié) Je pense que le code que tu souhaites utiliser ne fonctionnera pas comme tu le souhaites : if((!@isset($_SESSION['pseudo'])) || ($_SESSION['pseudo']=="")) Je ne suis pas sur, mais je pense que dans tous les cas, il y aura quelqu'un ici pour me reprendre. Je pense que malgré ton ISSET, php va évaluer la condition ($_SESSION['pseudo']=="") pour savoir si la condition entière présente dans ton if va être satisfaite ou non. Je te conseille de faire comme suit: if(!isset($_SESSION['pseudo'])){$condition=true;}else{ if ($_SESSION['pseudo']=="") { $condition=true; } else { $condition=false; }}if ($condition==true){...} Là, au moins, t'es sur que ta condition ($_SESSION['pseudo']=="") ne t'enverra pas das les roses car $_SESSION['pseudo'] existe forcément si elle doit être évaluée. Modifié 27 Mai 2006 par Bourinho
petit-ourson Posté 27 Mai 2006 Posté 27 Mai 2006 (modifié) Son code était correct, car si $_SESSION['pseudo'] n'existe pas on continue sans évaluer la seconde condition alors que si elle (la variables) existe on vérifiera la seconde condition avant de continuer. Modifié 27 Mai 2006 par petit-ourson
Bourinho Posté 27 Mai 2006 Posté 27 Mai 2006 Ok, en fait je faisais une analogie avec un problème quasiment identique qui est le suivant : if ((isset($_POST['Truc']))&&($_POST['Truc']==1)) Ca renvoit un message d'erreur ("WARNING") alors que l'on fait le isset avant...du coup, j'ai un peu de mal avec la chronologie dans les conditions PHP...
Anonymus Posté 27 Mai 2006 Posté 27 Mai 2006 Ok, en fait je faisais une analogie avec un problème quasiment identique qui est le suivant : if ((isset($_POST['Truc']))&&($_POST['Truc']==1)) Ca renvoit un message d'erreur ("WARNING") alors que l'on fait le isset avant...du coup, j'ai un peu de mal avec la chronologie dans les conditions PHP... Bon.. C'est typiquement le cas où l'on peut utiliser le '@' : if(@$_POST['truc']=="1") Seulement, il faut se méfier, car php est assez permissif. Pour lui, les valeurs '1', 1 et true peuvent avoir la même signification, suivant les cas.
Bourinho Posté 27 Mai 2006 Posté 27 Mai 2006 Merci Anonymous!!! Donc, si j'ai bien compris, la condition que tu proposes donne : _vrai si $_POST['Truc']="1" (ou ce qu'on veut suivant ce que l'on a à tester...) _faux sinon et on n'a pas de message d'erreur si $_POST['Truc'] n'existe pas!!! Si c'est ça, ça m'arrange bien!!!!
captain_torche Posté 28 Mai 2006 Posté 28 Mai 2006 Non, pas tout à fait. La condition == (double égal) renvoie vrai si ce que tu compares peut être assimilé à 1. Par exemple : if($truc == 1) renvoit vrai si $truc = '1' (1 en chaîne de caractères) $truc = 1 (1 numérique) $truc = true Si tu veux vérifier une égalité stricte (même valeur ET même type), il faut utiliser une triple égalité (===) Par exemple, si tu veux être sûr que $truc est égal à 1 numérique, il faudra utiliser if($truc === 1)
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant