由于我将错误报告级别更改为error_reporting(E_ALL | E_STRICT);
,因此我遇到此错误。我可以使用isset()
来避免此错误,但代码看起来很难看!
所以我的问题是:如果我回到正常的错误报告设置怎么办?知道某些事情尚未定义真的很重要吗?因为它在没有通知错误的情况下正常工作。
因为我有+10输入,我得到它们:
$username = $_POST['username'];
我还试图在文件的顶部使用它预先定义变量。
$username = null;
和$username = 0;
但它们不起作用。
感谢。
答案 0 :(得分:10)
重要。错误减慢了PHP的速度,你真的应该设计你的应用程序不要抛出错误。在PHP愉快地继续执行脚本的情况下,许多其他语言将完全死亡。
开发时,您的脚本不应抛出任何错误(即使是E_NOTICE)。
答案 1 :(得分:7)
我建议创建一个简单的函数来获取$ _POST值并为你做检查。
e.g。
<?php
function getPost($key)
{
return isset($_POST[$key]) ? $_POST[$key] : null;
}
编辑:
显然OP 如何使用它是不明确的:
$username = getPost('username');
答案 2 :(得分:2)
这意味着POST数组中没有密钥'username'。
通常,检查并更正这些内容是个好主意,因为它们可能会连接到应用程序中依赖于缺失值的其他部分。
答案 3 :(得分:2)
这很重要 - 当我在php应用程序中出现奇怪的行为时,错误日志是我看到的第一个地方,十分之九的“未定义的索引”消息直接导致了我的根本原因。
答案 4 :(得分:1)
通知确实有用:它们是检测代码中潜在错误的工具。如果您编写的代码触发了琐碎操作的通知,并且您不愿意更改它,则必须禁用通知报告,从而拒绝有用的工具,使您的工作比所需更加困难。
从历史上看,PHP的设计考虑了极其简单(在旧版本中,你只需要一个带有零行代码的$ username),但随着网络的发展,这种方法被证明是非常不合适的:它只会导致代码不安全,难以维护。
答案 5 :(得分:1)
无论级别如何,都应该解决所有错误的可移植性。
如果您构建的应用程序没有解决严格的错误,并且您的应用程序部署在 具有严格错误报告的服务器上,那么您的应用程序将会很快崩溃。
您最好的选择是检查$ _POST ['username']的存在,然后对该返回值执行独立操作。使用isset()返回值为true或false。
我猜$ _POST ['username']是用于某些描述的身份验证系统吗?因此,如果你的isset()函数返回false,那么你可以显示一个错误,详细说明用户需要用户名。