php – 带有$_POST的未定义索引
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 带有$_POST的未定义索引,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2023字,纯文字阅读大概需要3分钟。
内容图文
参见英文答案 > “Notice: Undefined variable”, “Notice: Undefined index”, and “Notice: Undefined offset” using PHP 28个
我正在尝试重新学习一些PHP基础知识来制作一个简单的登录脚本,但是我得到了一个我之前没有收到的错误(我在一年多前制作了相同的脚本并且从未出现过这个错误.我简化了代码我可以测试哪个区域有问题,这是问题所在:
<?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 – 带有$_POST的未定义索引全部内容,希望文章能够帮你解决php – 带有$_POST的未定义索引所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。