3 votes

Éviter d'utiliser isset en PHP lors de l'accès aux variables $_POST, $_GET et autres ?

Comment puis-je empêcher PHP de renvoyer un Variable indéfinie une erreur chaque fois que j'essaie de vérifier une variable si elle a un contenu et que cette certaine variable n'a pas encore été utilisée ? Dans ma configuration précédente, je peux vérifier $_POST['email'] même si je n'ai encore rien mis dedans. Il renvoie simplement un résultat vide. C'est comme ça que je veux que ma configuration PHP fonctionne, mais je n'arrive pas à trouver comment la configurer. :(

Exemple :

<?php
if ($_POST['info'] != '') {
  // do some stuff
}
?>
<form method="post">
<input type="text" name="info" />
<input type="submit" />
</form>

Lorsque vous utilisez le script ci-dessus dans une page PHP unique et que vous l'exécutez sur ma configuration actuelle, il renvoie un message de type Variable indéfinie erreur. Sur ma configuration précédente, ce script fonctionnait comme un charme. Quelqu'un peut-il m'éclairer sur ce problème ? Si vous avez besoin de plus de détails, dites-le et je vais essayer d'ajouter plus de détails à ce post.

I connaître sur le isset() mais je ne veux pas l'utiliser sur tous mes scripts. Je veux qu'il no être que restrictif sur les variables.

4voto

You Points 8861

Vous pourriez utiliser le empty qui renvoie vrai si la variable est soit non définie, soit vide (c'est-à-dire une chaîne de longueur nulle, 0, NULL, FALSE et ainsi de suite) :

if(!empty($_POST['variable'])){
    /* ... */
}

Il s'agit à peu près du même test que celui que vous effectuez actuellement, sauf qu'il retournera également false (ne pas exécuter le bloc), sans avertissement, lorsque la variable est désactivée.

3voto

Claudiu Points 2846

Il est fort probable qu'il ne s'agisse pas d'une erreur, mais d'un avertissement. Vous pouvez configurer PHP pour qu'il n'affiche pas les erreurs et les avertissements si vous le souhaitez. Ajoutez simplement ceci au début de votre code :

ini_set('display_errors', 0);

Bien que je vous recommande de ne pas être paresseux et de faire en sorte que votre code n'affiche pas d'erreurs, d'avertissements ou d'avis, mieux vaut prévenir que guérir.

Et le meilleur moyen de faire ce que vous voulez faire est de

<?php
if (isset($_POST['info'])) {
  // do some stuff
}
?>
<form method="post">
<input type="text" name="info" />
<input type="submit" />
</form>

0voto

J'ai parfois fait ce qui suit pour effectuer une comparaison et éviter l'avertissement concernant une variable non définie :

if( @$_POST['variable'] == 'value' )
{
     ...
}

Bien que PHP appelle toujours des gestionnaires d'erreurs personnalisés, je devrais peut-être reconsidérer cette stratégie.

0voto

Dhamesh Makwana Points 99

Utilisez-vous votre propre serveur ? Si c'est le cas, vous pouvez modifier la fonction error_reporting via PHP.INI. Au-dessus de la ligne

"error_reporting = E_ALL ;" (peut ne pas être E_ALL) Il y aura une petite documentation expliquant quel type d'erreurs vous pouvez montrer.

Si vous utilisez un serveur partagé d'une société d'hébergement, je crois que certaines sociétés proposent une gestion rapide de PHP dans le CP de votre compte d'hébergement.

J'espère que j'ai aidé ;-)

ps- Si vous avez votre propre serveur, vous devrez redémarrer Apache. Je ne sais pas comment cela se fait dans Ubunto (si c'est ce que vous utilisez) mais pour CentOS c'est :

/sbin/service httpd restart

0voto

Gucho Ca Points 110

La variable sera toujours SET tant que vous aurez envoyé la commande form .

Il est donc préférable de vérifier si la variable n'est pas empty .

if(!empty($_POST['var']))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X