Confuse with empty, isset ,! Empty ,! Isset

I have the following which is not working as expected as it $_GET['category']

may be 0 as well.

if ( empty( $_GET['category'] ) ){
    // do something
} else {
    // do something else
}

      

How to overwrite this if statement to do 3 different things

  • Do something if $_GET['category']

    it doesn't exist at all
  • Do something if $_GET['category'] == 0

  • Do something if $_GET['category'] ==

    something other than "doesn't exist" and 0.

I tried different combinations empty()

, !empty()

, isset()

, !isset()

, but I do not get the results I need. Maybe I'm wrong...

+2


source to share


6 answers


This is not very difficult to do: isset

this is the method you need.

if (!isset($_GET['category'])) {
    // category isn't set
} elseif ($_GET['category'] === '0') {
    // category is set to 0
} else {
    // category is set to something other than 0
}

      



Note that I matched a string for exact equality '0'

because variables GET

and POST

are always strings (or sometimes arrays) and never loop when PHP first gets them.

+6


source


if (!isset($_GET['category']))
{
    1. Do something if $_GET['category'] does not exist at all
}
elseif ($_GET['category'] == 0)
{
    2. Do something if $_GET['category'] == 0
}
elseif (isset($_GET['category']) && ($_GET['category'] != 0)
{
    3. Do something if $_GET['category'] == something other than "does not exist" and 0.
}

      



My parentheses might be a little bit somewhere, but hopefully this helps you.

0


source


0


source


Try the following:

if (!isset($_GET['category'])) { // if variable not specified
}
elseif ($_GET['category'] == 0) { // variable is specified and zero
}
else { // variable is specified and not zero
}

      

0


source


<?php

$bad_values = array(null, '', 'dirty word');

if(isset($_GET['xd']))
{
    if(in_array($_GET['xd'], $bad_values, true))
    {
        // bad, it was null, empty or something else you think is not ok 
    }
    else
    {
        // it fine, now check whether you got the zero. do a string comparison 

        if($_GET['xd'] == '0')
        {
            // you got the zero, yell at the user
        }
        else
        {
            // you got something else, it might be fine, it might be spoofed. use referential integrity to enforce data integrity in your db
        }
    }
}
else
{
    // it wasn't even sent in the request, that falls under 1)
}

      

0


source


Make sure the attribute of the name

element that does get

on the previous page is set, preferably the same as it was id

. Then:

$category='';
if ( !isset( $_GET['category'] ) ){
    //1
} else {
    $category=$_GET['category'];
    //3
  if($category==0){
    //2
   }
}

      

0


source







All Articles