我有一个简单的脚本,允许用户注册帐户。关于$_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')
等等…
在创建新用户之前,您可能还需要检查是否有有效的值(例如,不为空)。