我有以下代码:
$a=$_POST['dsaghgjjkhfdsfdsfsdfdsjhkhkhgj'];
if(isset($a))
{
echo"exists";
}
else
{
echo"does not exist";
}
Run Code Online (Sandbox Code Playgroud)
回显值“不存在”,但是当我将修剪应用于 $_POST 变量时,
$a=trim($_POST['dsaghgjjkhfdsfdsfsdfdsjhkhkhgj']);
if(isset($a))
{
echo"exists";
}
else
{
echo"does not exist";
}
Run Code Online (Sandbox Code Playgroud)
代码将回显“存在”。为什么将不存在的 $_POST 变量传递给 trim() 会神奇地使它存在?
这正是发生的事情,一步一步。
当您$_POST['...']在第二个代码片段中引用时,会发出此通知:
注意:未定义索引:...在线...
您不会收到通知,因为您的error_reporting级别不包括E_NOTICE. 中间体$_POST['...']被评估NULL并trim(NULL)返回一个空字符串。所以$a被分配了一个空字符串。
如果您在脚本前添加error_reporting(E_ALL)和ini_set("display_errors", "on"),您将看到实际发布的错误/警告/通知。
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |