Probleme entre isset en !empty

Résolu
floxone Messages postés 88 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 10 août 2007 - 31 mai 2005 à 10:54
floxone Messages postés 88 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 10 août 2007 - 1 juin 2005 à 15:03
Salut à tous,

J'ai un petit soucis qui m'interroge fortement....

Voilà, j'ai implémenté un moteur PHP en local sur EasyPHP qui marche très bien. Le problème, c'est quand je le met chez free ou amen. Mes fonctions tombent en rade.

J'ai trouvé le problème : les vérifications par isset($_POST['variable']) ne marchent pas. Il faut que je les remplace par des !empty($_POST['variable']).

Je voulait juste savoir si ca venait d'une configuration d'apache ou si c'était EasyPHP qui était vraiment NAZE !

Merci ed vos réponses.... j'ai rien trouvé sur Nexen ou ici.

Flo

12 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 juin 2005 à 13:39
Ca peut arriver si le register_globals est a ON sur le serveur (mauvaise idee).
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
31 mai 2005 à 11:07
hello,



isset() et empty() ne verifient pas tout a fait les memes choses...



isset() verifie si la variable EXISTE. Un unset() fera renvoyer FALSE a
isset() evidemment. Idem si la variable est de "type" NULL.



empty() verifie si la variable peut-etre consideree comme vide. Exemples de php.net :

<var>"" (an empty string)</var>, ----
<var>0 (0 as an integer)</var>, ----
<var>"0" (0 as a string)</var>, ----
<tt>NULL</tt>, ----
<tt>FALSE</tt>, ----
<var>array() (an empty array)</var>, ----
<var>var $var; (a variable declared, but without a value in a class)</var>

tout ca fera renvoye TRUE a empty().



Bref...exemples (merci GRenard pour le lien, encore une fois, lol, de ce quizz horrible...) <?php

$var = false;

if (isset ($var))

echo 'set';

echo '
';

if (!isset ($var))

echo 'pas set';

echo '
';

if (empty($var))

echo 'vide';

echo '
';

if (!empty($var))

echo 'pas vide';

?>

affiche :

set

vide



Et voui...



<?php

$var = 0;

if (isset ($var))

echo 'set';

echo '
';

if (!isset ($var))

echo 'pas set';

echo '
';

if (empty($var))

echo 'vide';

echo '
';

if (!empty($var))

echo 'pas vide';

?>



idem : set, vide.



Plus interessant :



<?php



if (isset ($var))

echo 'set';

echo '
';

if (!isset ($var))

echo 'pas set';

echo '
';

if (empty($var))

echo 'vide';

echo '
';

if (!empty($var))

echo 'pas vide';

?>



pas set

vide



Et voui...

Alors utiliser !empty() en lieu et place de isset() est une tres
mauvaise idee...et a mon avis, il n'y a pas de probleme. Le probleme
vient plutot de la facon de verifier les variables. Maintenant,
pourquoi en local c'est ok et pas chez Amen...aucune idee.
0
floxone Messages postés 88 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 10 août 2007
31 mai 2005 à 11:23
C'est exactement ca le probleme... j'ai bien compris la difference entre isset et !empty.

Mon interogation est : pourquoi en local ca marche et pas sur l'hebergeur ! C'est super étrange...

Mais bon, dans mon cas, c'est pas très grave de remplacer, c'est juste un peu long et fastidieux.

Mais mon interogation perciste.... EasyPHP=?BIZAR.... HUM HUM... a creusé....

Si tu veux, c'est pour vérifier les champs renseignés dans des post et dans des get... J'ai l'impression que chez mon hebergeur, toutes les variables sont initialisees alors qu'en local non...
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
31 mai 2005 à 12:11
Ce que je voulais dire c'est que isset() et !empty() reagissent differemment....si tu remplaces, tu pourrais avoir des surprises.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
31 mai 2005 à 15:43
Salut,



ne remplace pas ton code correct... Change plutôt d'hébergeur...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
31 mai 2005 à 16:00
J'osais pas le dire...
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
31 mai 2005 à 17:43
y'a des jours, les boulets passant quelques fois sur ce forum nous font
regretter les vieilles méthodes consistant à dire vraiment ce qu'on
pense...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
floxone Messages postés 88 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 10 août 2007
1 juin 2005 à 11:56
Si changer d'hébergeur était envisageable, je le ferai. Le but de ma question était pourtant simple....

Mon script marche sur EasyPHP
marche pas chez free
marche pas sur serveur virtuel Amen sur lequel j'ai accès à tous les paramètres possibles.

C'est pour cela que je me demandait si ca ne venait simplement pas d'un parametre activé / desactivé. Ou d'une faille sur EasyPHP...

Mais puisque certains ne veulent pas dire ce qu'ils pensent...
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 juin 2005 à 12:09
Lol...
Tu as eu une reponse claire : ton code etait bon. Donc si faille il y a, elle ne vient pas d'Easyphp...
0
floxone Messages postés 88 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 10 août 2007
1 juin 2005 à 12:35
Petite remise en question...

Je suis en train de me demander si ca ne viendrait pas d'autre part...

J'essaye d'etre le plus clair possible :

- 1 page avec formulaire par POST et texte caché vide par défaut
- 1 page de traitement qui recupère les données (si case cochée, initialisation d'une variable avec pour valeur le champs caché)

Ces 2 variables portent le meme nom : $marque. Est-il possible que par la methode POST, on recupere la variable directement par son nom sans faire $var=$_POST['var'] ???

Ce qui fait qu'en fait $marque est initialisé depuis le formulaire dans la page précédente...

J'espère avoir était suffisament clair...
0
floxone Messages postés 88 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 10 août 2007
1 juin 2005 à 13:55
Merci, je verif ton idee...
0
floxone Messages postés 88 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 10 août 2007
1 juin 2005 à 15:03
Que veux-tu que je te dises : tu es le meilleur ;-)

Pour info : j'ai créé un .htacces avec dedans php_flag register_globals off

Et voilà... C'est tout !

Merci.
0
Rejoignez-nous