phphtmlurlvariables

How to verify if $_GET exists?


So, I have some PHP code that looks a bit like this:

<body>
    The ID is 

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

</body>

Now, when I pass an ID like http://localhost/myphp.php?id=26 it works alright, but if there is no ID like just http://localhost/myphp.php then it outputs:

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

I have searched for a way to fix this but I cannot find any way to check if a URL variable exists. I know there must be a way though.


Solution

  • You can use isset function:

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

    You can create a handy function to return default value if index doesn't exist:

    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');
    

    You can also try to validate it at the same time:

    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);