2015-10-12 125 views
-1

时,我收到以下错误未定义指数:呼吁用htmlspecialchars

Notice: Undefined index: test 

参照这一行:

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

我需要定义test的地方,即使我想从URL中读取它?

-

CNC中

我其实看链接为发布此之前重复的答案,但无法看到与使用htmlspecialchars,我认为是导致该问题的任何事情。

+1

尝试输出'var_dump($ _ GET)'并查看是否存在“test”键。如果在直接使用前进行'isset'检查会很不错 – Kamehameha

+0

[PHP:“注意:未定义的变量”和“注意:未定义的索引”]的可能重复(http://stackoverflow.com/questions/ 4261133/php-notice-undefined-variable-and-notice-undefined-index) – Epodax

回答

2

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

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

所有信息性答案都在这里,但我使用了这一个,它的工作原理将尽可能快地接受这个答案。谢谢。 – Robert

1

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

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

在试图对不存在的东西执行操作之前,它检查是否设置了'$ _GET [“test”]''。 – Gravy

2

您必须启用错误通过使用下面的行脚本之前上报上运行

error_reporting(E_ALL); 

然后检查你使用isset使用前的变量存在()函数在php

isset($_GET["test"]) 
1

您没有在GET请求中提供测试变量,因此它显示此错误。 尝试使用Gravy建议的代码。尽管如果在URL中未收到测试,这会使标记为空。 IF令牌将被接收他们的强制性要求,你可以这样做

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

正如你提到的,从网址读取。它不能保证你页面被请求打通,,它可能是post ..要同时使用

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

$ token = htmlspecialchars(@ $ _ GET [“test”]);

使用@忽略通知错误

+1

你应该很少(如果有的话)忽略错误/通知,而应该处理它。 – Epodax