empty($_GET['variable']) 当变量没有值时阻塞脚本

empty($_GET['variable']) blocks the script when the variable has no value

我正在编写一个非常简单的脚本,它使用 GET 参数在脚本中定义一个变量。所以在脚本的开头,我检查 GET 参数是否存在并且它不为空(以避免 ...page.php?param=)。

这段代码是我写的(参数命名为a):

if (!isset($_GET['a']) || empty($_GET['a'])) {
    header("Location: https://..."); // redirect to home page
    die();
}

当根本没有 GET 参数时它可以工作,但是如果有 ?a?a=,那么页面只是空白,即使我添加了 echo "some text";

我不太明白这是怎么回事。有人可以给我解释一下吗?

谢谢 :-)

编辑:这里是整个代码页:

<?php

if (!isset($_GET['a']) || trim($_GET['a']) == '' || $_GET['a'] == NULL) {
    header("Location: https://google.com");
    exit();
}

echo "hello";

所以我应该重定向到 Google.com 或打印 "hello" 但是 none 这种情况发生了。

尝试

if (!isset($_GET['a']) || trim($_GET['a']) == "") {

查看手册是否为空 http://php.net/manual/en/function.empty.php

试试这个:

if (!isset($_GET['a']) || trim($_GET['a']) == '' || $_GET['a'] == NULL) {
    header("Location: https://www.google.com"); // redirect to home page
}

空白页是 PHP 错误的典型示例。您需要像这样设置 use PHP error logging facility

error_reporting(E_ALL);
ini_set('display_errors', 1);

在您页面的最顶部。

重写你的页面我会这样做:

error_reporting(E_ALL);
ini_set('display_errors', 1);
if (!isset($_GET['a']) || is_null($_GET['a'])) {
    header("Location: https://google.com");
    exit();
}

echo "hello";