如何测试URL查询字符串中是否存在特定变量?

时间:2014-01-18 06:51:02

标签: php

我编写了以下php代码来从URL查询字符串中捕获名称和电子邮件。

   <?php
        $name = "rkb";                // Default name
        $email= "rkb@example.com";    // Default email
        if ($_GET['name']) {
            $name = test_input($_GET['name']);
        }
        if ($_GET['email']) {
            $email = test_input($_GET['email']);
        }

        function test_input($data) {
            $data = trim($data);
            $data = stripslashes($data);
            $data = htmlspecialchars($data);
            return $data;
        }

    ?>

我在URL中传递变量nameemail时效果很好。但是当我加载这个没有查询字符串的页面时,我得到了这两个错误

Notice: Undefined index: name in path\to\folder\index.php on line 4
Notice: Undefined index: email in path\to\folder\index.php on line 7

我想让PHP表现得如此$name$email在缺少查询字符串时获取默认值。

5 个答案:

答案 0 :(得分:4)

您需要的是PHP函数isset

一种简单的方法,

$name = isset($_GET['name']) ? test_input($_GET['name']) : "rkb";

答案 1 :(得分:3)

使用empty()。它测试变量是否已设置以及是否包含非空值。

    if (!empty($_GET['name'])) {

答案 2 :(得分:2)

使用if (isset($_GET['name']))代替if ($_GET['name'])

答案 3 :(得分:2)

您可以使用isset()来确定变量是否已设置且不为NULL。另外,请检查empty()

    if (isset($_GET['name']) && !empty($_GET['name'])) {
       $name = test_input($_GET['name']); 
    }

答案 4 :(得分:1)

使用isset函数检查是否设置了$ _GET。像这样改变你的代码。

<?php
    $name = "rkb";                // Default name
    $email= "rkb@example.com";    // Default email
    if (isset($_GET['name'])) {
        $name = test_input($_GET['name']);
    }
    if (isset($_GET['email'])) {
        $email = test_input($_GET['email']);
    }

    function test_input($data) {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }

?>