I have the following which doesn\'t work properly as $_GET[\'category\']
can also equal 0.
if ( empty( $_GET[\'category\'] ) ){
// do something
This isn't really hard to do: isset
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 have compared for exact equality to the string '0'
, because GET
and POST
variables are always strings (or occasionally arrays) and never numbers when PHP first receives them.
There is the filter_input-function for such cases.
Try this:
if (!isset($_GET['category'])) { // if variable not specified
}
elseif ($_GET['category'] == 0) { // variable is specified and zero
}
else { // variable is specified and not zero
}
Make sure the name
attribute of the element that is doing get
on the previous page is set, preferably to the same as its id
.
Then:
$category='';
if ( !isset( $_GET['category'] ) ){
//1
} else {
$category=$_GET['category'];
//3
if($category==0){
//2
}
}
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 brackets might be slightly out somewhere but hopefully that should help you out.
<?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's 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)
}