【问题标题】:PHP: Can't set variable when $_REQUEST is blankPHP:当 $_REQUEST 为空时无法设置变量
【发布时间】:2011-04-04 15:57:26
【问题描述】:

我在使用 $_REQUEST 或我的语法设置变量时遇到问题。检查$_REQUEST['orderBy'] 时,如果它为空白/空,我想设置默认值'order_date'。但是,当它检索并清空$_REQUEST['orderBy'] 时,它只是保持为空而不是设置它。我在代码中做了一个丑陋的修复来解决这个问题,但我只是想知道我做错了什么:

$orderBy = isset($_REQUEST['orderBy']) ? stripslashes($_REQUEST['orderBy']) : 'order_date';

【问题讨论】:

    标签: php post get request


    【解决方案1】:

    这在语法上没有任何问题,但如果 $_REQUEST['orderBy'] 已设置但为空,它会将 $orderBy 设置为空值。尝试使用empty()

    $orderBy = (empty($_REQUEST['orderBy'])) ? 'order_date' : $_REQUEST['orderBy'];
    

    如果它仍然不起作用,您可能在此行之前错误地设置了$_REQUEST['orderBy']。您应该尝试使用更具体的超级全局变量,例如 $_POST$_GET,因为它们使您的代码更清晰易读,并且因为它们提高了应用程序的安全性。

    【讨论】:

    • 更清楚的是真实的。但是安全是一种错误归因,尤其是当它与一个名为orderBy的参数有关时。
    • 诚然在这种情况下无关紧要,但我坚持认为不声明数据的来源可能会引入安全漏洞。
    • 如果被检查的值可以转换为空字符串,则空失败。这包括'0'' 'null 等。如果 castable-to-empty-string 不是您需要考虑的问题,这没什么大不了的,但它会在稍后的某个时候绊倒您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2012-11-19
    • 1970-01-01
    • 2011-11-13
    • 2013-12-29
    • 1970-01-01
    相关资源
    最近更新 更多