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

时间:2014-10-30 10:33:42

标签: php codeigniter post

我有一个简单的脚本允许用户注册帐户。在接收表单提交的脚本的以下两行中出现关于$ _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']确实未定义,则该行无法正常工作。在数据库中创建的用户使用在提交表单上输入的用户名和电子邮件。既然如此,为什么它会引发明显的错误警告呢?

2 个答案:

答案 0 :(得分:2)

尝试这样的事情。

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

答案 1 :(得分:0)

它们可能是未定义的,因此可能是通知。

CodeIgniter has a function以帮助处理此问题,如果该项目不存在,则返回FALSE

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

所以,而不是:

$_POST['email']

您可以使用:

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

依旧......

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