Question

If you try to read the value of a 'get' variable, what happens if said variable had not been set in the URL. Example: you request the page test.php, in that file it tries to read the value of $_GET['message']. What happens in this case? dose the value just get returned as ''?

Does this mean that if I am always expecting a value to be entered, and am not willing to accept a value of '' that I can just do something like

$foo = $_GET['bar'];
if($foo == ''){
  // Handle my 'error'
}
else
{
  // $foo should now have a value that I can work with
}

Please keep in mind I know that I could use isset($_GET['bar']) But I don't just want to know if it is set, I don't care if it is or not, I just care if it has a value that is more than just an empty string.

Was it helpful?

Solution

If you don't care if the value is actually set, you can use this:

if (empty($_GET['bar']))
    // value is null, false, 0, '0' or an empty string (including whitespace).

OTHER TIPS

If you try and access an array item that doesn't exist, the result will be null.

$foo = $_GET['bar']; //$foo is now null

It is worth noting that if you are using the weak comparison operator == rather than the strict comparsion ===, then '' will be treated as null.

The downside with the above code is that it will generate an notice when you access the array with an index that doesn't exist which is a bit messy.

Hence you should check if the value is set before you assign the contained value to a variable.

if ( !isset($_GET['bar']) ){
    //handle error or assign default value to $foo
}else{
    $foo = $_GET['bar'];
}

If you want to have a default value, and only replace that default value if the $_GET value exists you can use the conditional operator (scroll down to "Ternary Operator")

$foo = isset($_GET['bar']) ? $_GET['bar'] : 'default value';

Here is how I do it.

$foo = ( isset( $_GET['bar'] ) ) ? $_GET['bar'] : false;

if(false === $foo){
   die( 'no Foo for your Bar' );
}

As a side, you will probably never get a true Boolean value from $_GET

If I understand correctly it's:

$foo = $_GET['bar'];
if ((!isset($foo)) || $foo == '') {
//GET veriable not set, error
}
else {
// GET veriable set, code here.
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top