如果没有数据发送,我该如何处理GET变量

时间:2014-12-25 19:02:32

标签: php html

在我的网页上,我有2个选项,可以创建新列表或编辑现有列表。

如果用户希望创建新列表,则会出现带有textarea的新页面。

如果用户希望编辑现有列表,则显示列表,用户可以选择列表。选择列表后,用户将被重定向到新列表页面,其中已填写文本区域内容。

我在新列表页面中有这个if语句来接受编辑列表页面的输入:

$items = $_GET['items'];
if ($items){
    //get the stuff from the db and populate the text area
}
else {
    //a new empty text area
}

问题在于,当我尝试直接从“创建新列表”中访问此页面时,选项,我收到一条错误,指出items是一个未定义的变量。 这是有道理的,因为原始页面没有发送任何数据,所以没有任何东西可以获得。

我该如何解决这个问题? 我可以将原始页面设置为发送items的空值,但我想避免更改原始页面。 是否可以选择检查请求的来源,或者只有在可以接收变量时才激活变量的选项(可由GET功能使用)?

3 个答案:

答案 0 :(得分:2)

使用isset()

isset - 确定变量是否已设置且不是NULL

if (isset($_GET['items'])){
    //get the stuff from the db and populate the text area
    $items = $_GET['items'];
}

@Eugen建议(在分配变量之前检查:

$items = isset($_GET['items']) ? $_GET['items'] : null; 
if($items) { // bla bla }

答案 1 :(得分:1)

首先你必须写/检查

print_r($_GET)

如果您只想查看它,可以使用

if(isset($_GET["items"]){
      //it have a value
}

Plus:如果使用unset()取消设置变量,则不再设置该变量。如果测试已设置为NULL的变量,则isset()将返回FALSE。另请注意,NULL字节(" \ 0")不等同于PHP NULL常量。

答案 2 :(得分:-1)

你想要这个。您需要检查是否设置了$_GET['items'],然后您可以将$items设置为结果。

if (isset($_GET['items']) && $items = $_GET['items']){
    //get the stuff from the db and populate the text area
}
else {
    //a new empty text area
}