Index indéfini: Erreur dans le script PHP
Dans une page php j'ai code suivant:
if($_REQUEST['c']!="") //I get error on this line itself. Why?
{
$pidis=(int)($_REQUEST['c']);
}
Je reçois Undefined index d'erreur.
Sur Googler j'ai réussi à comprendre que si une page est l'accès sans paramètres (dans l'URL) à laquelle nous tentons d'accès, nous pouvons obtenir cette erreur/d'avertissement. Je crois que si un paramètre n'est pas défini dans l'URL il faut juste de retour à vide au lieu de donner de l'erreur/message d'avertissement.
Je sais qu'il est possible de supprimer les erreurs et d'alerte en ajoutant
error_reporting(E_ALL ^ E_NOTICE);
Mais je ne veux pas le faire.
Cette même page fonctionnent très bien sur notre serveur web, mais ne fonctionne pas sur nos clients serveur web.
Pourquoi est-ce arrivé?
Comment résoudre ce problème?
source d'informationauteur Yogi Yang 007 | 2010-01-29
Vous devez vous connecter pour publier un commentaire.
Vous obtenez cette erreur parce que vous tentez de comparer
$_REQUEST['c']
quelque chose quand$_REQUEST['c']
n'existe pas.La solution est d'utiliser la fonction isset() avant de les comparer. Cela permettra d'éliminer l'avertissement, car la comparaison ne se produira pas si
$_REQUEST['c']
n'existe pas.C'est un
E_NOTICE
erreur de niveau et de votre niveau de les rapports d'erreurs affectera si l'erreur s'affiche ou non. Votre client serveur aE_NOTICE
niveau de rapport d'erreur activé, ce qui est pourquoi il montre là-bas.Il est toujours une bonne idée de développer en utilisant
E_ALL
de sorte que vous pouvez attraper ce genre d'erreur avant de passer votre code à d'autres serveurs.Une autre solution est d'utiliser les éléments suivants:
Vous pouvez également, si vous préférez retourner une valeur autre que le vide, en plaçant une valeur par défaut dans la version finale du jeu de guillemets simples, par exemple
ou de retourner un autre type de variable, par exemple un entier:
Au lieu de
isset()
vous pouvez également utiliser:array_key_exists()
.La différence entre les deux méthodes est que
isset()
vérifie également si la valeur de la variable estnull
. Si c'estnull
puisisset
retournefalse
alors quearray_key_exists()
retourne toujourstrue
si la clé existe (pas de mater la valeur). E. g.:Selon le contexte, il est important de distinguer ce. Dans votre cas, je ne pense pas que cela importe, n'a pas d'importance, que (je suppose) un paramètre de la requête ne sera jamais
null
(à l'exception de l'un remplace manuellement).Utilisation
isset($_REQUEST['c'])
pour tester si il existe tout d'abord.PHP est de donner un avis (ce qui n'est pas une erreur : c'est juste un avis) lorsque vous essayez d'utiliser une variable qui n'existe pas, ou un élément de tableau qui n'existe pas.
C'est juste pour vous aider, et vous ne doit pas masquer les avis : ils sont ici pour vous aider, par exemple, pour vous aider à détecter les fautes de frappe dans les noms de variable.
Avant de l'utiliser que d'index de tableau, si ce n'est pas toujours présent, vous devez tester si c'est ici, à l'aide de
isset
: