web-dev-qa-db-fra.com

Comment vérifier si $ _GET existe?

Donc, j'ai du code PHP qui ressemble un peu à ceci:

<body>
    The ID is 

    <?php
    echo $_GET["id"] . "!";
    ?>

</body>

Maintenant, quand je passe un ID tel que http://localhost/myphp.php?id=26, cela fonctionne bien, mais s'il n'y a pas d'ID similaire à http://localhost/myphp.php, il génère:

The ID is
Notice: Undefined index: id in C:\xampp\htdocs\myphp.php on line 9
!

J'ai cherché un moyen de résoudre ce problème mais je ne trouve aucun moyen de vérifier si une variable d'URL existe. Je sais qu'il doit y avoir un moyen cependant.

55
Doorknob

Vous pouvez utiliser la fonction isset:

if(isset($_GET['id'])) {
    // id index exists
}

Vous pouvez créer une fonction pratique pour renvoyer la valeur par défaut si l'index n'existe pas:

function Get($index, $defaultValue) {
    return isset($_GET[$index]) ? $_GET[$index] : $defaultValue);
}

// prints "invalid id" if $_GET['id'] is not set
echo Get('id', 'invalid id');

Vous pouvez également essayer de le valider en même temps:

function GetInt($index, $defaultValue) {
    return isset($_GET[$index]) && ctype_digit($_GET[$index])
            ? (int)$_GET[$index] 
            : $defaultValue);
}

// prints 0 if $_GET['id'] is not set or is not numeric
echo GetInt('id', 0);
127
Zbigniew
   if (isset($_GET["id"])){
        //do stuff
    }
17
Makita

Normalement c'est assez bon à faire:

echo isset($_GET['id']) ? $_GET['id'] : 'wtf';

Ainsi, lorsque vous affectez la variable var à d'autres variables, vous pouvez définir les valeurs par défaut en une seule opération au lieu d'utiliser constamment les instructions if pour leur attribuer une valeur par défaut si elles ne sont pas définies.

9
Sammaye

Vous pouvez utiliser la fonction array_key_exists() intégrée:

if (array_key_exists('id', $_GET)) {
    echo $_GET['id'];
}

ou la fonction isset() intégrée:

if (isset($_GET['id'])) {
    echo $_GET['id'];
}
5
Asaph

Vous utilisez PHP isset

Exemple 

if (isset($_GET["id"])) {
    echo $_GET["id"];
}
5
Baba

Utilisation et empty() avec négation (pour test si non vide)

if(!empty($_GET['id'])) {
    // if get id is not empty
}
4
Julien

Essayez-le:

if(isset($_GET['id']) && !empty($_GET['id'])){
   echo $_GET["id"];
 }
0
illeas