调用 htmlspecialchars 时未定义的索引

Undefined index when calling htmlspecialchars

我收到以下错误:

Notice: Undefined index: test

参考这一行:

$token = htmlspecialchars($_GET["test"]);  

我是否需要在某处定义 test,即使我试图从 URL 读取它?

-

-编辑-

我实际上在发布此链接之前查看了作为重复链接的答案,但在其中看不到任何与使用 htmlspecialchars 有关的内容,我认为这是导致问题的原因。

在应用 htmlspecialchars 之前检查 $_GET["test"] 是否存在。如果未设置 $_GET["test"],这会将令牌值设置为 null

$token = isset($_GET["test"]) ? htmlspecialchars($_GET["test"]) : null;

您的变量不存在。使用isset检查这个

if(isset($_GET["test"]))
    $token = htmlspecialchars($_GET["test"]); 
else
    echo "variable test doesn't exist";

您必须在脚本运行前使用以下行启用错误报告

error_reporting(E_ALL);

然后使用php

中的isset()函数在使用前检查变量是否存在
isset($_GET["test"])

您没有在 GET 请求中提供测试变量,因此显示此错误。 尝试使用 Gravy 建议的代码。如果在 URL 中没有收到测试,这将使令牌为空。 如果令牌是接收它们的强制性要求,您可以执行类似

的操作
if(isset($_GET['test'])) {
    $token = htmlspecialchars($_GET["test"]);
}else{
    // do stuff when you dont get test. Return or output error etc.
}

正如您所提到的,要从 url 读取。不能保证您的页面是通过 get 请求的,它可能是 post .. 要同时使用

$token = htmlspecialchars($_REQUEST["test"]);  

$token = htmlspecialchars(@$_GET["test"]);

使用@忽略通知错误