php中post未定义索引,php – 带有$_POST的未定义索引

参见英文答案 > “Notice: Undefined variable”, “Notice: Undefined index”, and “Notice: Undefined offset” using PHP                                    28个

我正在尝试重新学习一些PHP基础知识来制作一个简单的登录脚本,但是我得到了一个我之前没有收到的错误(我在一年多前制作了相同的脚本并且从未出现过这个错误.我简化了代码我可以测试哪个区域有问题,这是问题所在:

$user = $_POST["username"];

if($user != null)

{

echo $user;

echo " is your username";

}

else

{

echo "no username supplied";

}

?>

现在,当我将一个变量发送到脚本时,这段代码工作正常,但是当没有提供变量时,它会发出错误.理论上这很好,因为如果没有提供用户名/传递,那么预计会出错.在将代码发送到脚本之前,我将检查以确保这一点,但是我担心不知何故空字符串可能泄漏并吐出一些未知错误.这是我得到的错误:

( ! ) Notice: Undefined index: username in C:\wamp\www\verify_login.php on line 2

Call Stack

Time Memory Function Location

1 0.0003 668576 {main}( ) ..\verify_login.php:0

没有提供用户名

你可以看到代码寄存器没有提供变量,但它给出了错误,我假设意味着没有找到一个变量是预期的或类似的东西.有人可以帮我澄清一下吗?

解决方法:

在PHP中,从未设置的变量或数组元素与值为null的变量或数组元素不同;尝试访问此类未设置值是运行时错误.

这就是你遇到的:数组$_POST在键“username”上没有任何元素,因此解释器在进入无效测试之前中止你的程序.

幸运的是,您可以测试变量或数组元素的存在,而无需实际尝试访问它;这就是特殊操作符所做的事情:

if (isset($_POST["username"]))

{

$user = $_POST["username"];

echo $user;

echo " is your username";

}

else

{

$user = null;

echo "no username supplied";

}

当PHP试图将$_POST [“username”]的值作为参数传递给函数isset()时,看起来它会以与代码完全相同的方式爆炸.但是,isset()根本不是一个函数,而是在评估阶段之前识别的特殊语法,因此PHP解释器检查值的存在而不实际尝试检索它.

值得一提的是,随着运行时错误的发生,缺少的数组元素被认为是次要元素(分配了E_NOTICE级别).如果更改error_reporting级别以便忽略通知,则原始代码实际上将按写入方式工作,尝试的数组访问返回null.但这被认为是不好的做法,特别是对于生产代码.

旁注:PHP进行字符串插值,因此if块中的echo语句可以组合成一个:

echo "$user is your username";

标签:php,login,undefined-index

来源: https://codeday.me/bug/20190917/1809251.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值