当索引定义明确时,PHP会警告未定义索引



我有一个简单的脚本,允许用户注册帐户。关于$_POST索引未定义的警告出现在接收表单提交的脚本的以下两行:

$email = mysql_real_escape_string($_POST['email']);
$username = mysql_real_escape_string($_POST['username']);

我尝试过var_dump($_POST),并且这些索引定义得很清楚。此外,以下行起作用,并输入您期望的信息:

$id = $this->flexi_auth->insert_user($email, $username, $password, false, false, true);

如果$_POST['email']$_POST['username']真的没有定义,那么这行就不可能工作。在数据库中创建的用户使用提交表单上输入的用户名和电子邮件。既然如此,为什么它会发出明显的错误警告?

试试这样的方法。

$email = '';
$username = '';
if(!empty($_POST['email']) && !empty($_POST['username'])
{
    $email = mysql_real_escape_string($_POST['email']);
    $username = mysql_real_escape_string($_POST['username']);
}

它们可能是未定义的,因此需要注意。

CodeIgniter有一个帮助处理此问题的函数,如果项目不存在,它将返回FALSE

$this->input->post('item');

所以,不是:

$_POST['email']

您可以使用:

$this->input->post('email')

等等…

在创建新用户之前,您可能还需要检查是否有有效的值(例如,不为空)。

最新更新