2014-10-30 25 views
0

我有一個簡單的腳本來允許用戶註冊一個帳戶。正在發生未定義約$ _ POST指標的警告在接收到表單提交腳本的以下兩行:當索引被明確定義時,PHP會發出未定義索引的警告

$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']真的不確定的,沒有辦法,該行會的工作。在數據庫中創建的用戶使用在提交表單中輸入的用戶名和電子郵件。既然如此,爲什麼會拋出明顯虛假的警告?

+0

不要忘記檢查$ email和$ username是否爲空。這可能是錯誤。 – Matheno 2014-10-30 10:43:46

+0

[**請不要在新代碼中使用'mysql_ *'函數**](http://stackoverflow.com/q/12859942)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://uk.php.net/manual/en/function.mysql-connect.php)?學習[*準備的語句*](http://en.wikipedia.org/wiki/Prepared_statement),並使用[PDO](http://php.net/pdo)或[MySQLi](http:// php.net/mysqli) - [這篇文章](http://php.net/manual/en/mysqlinfo.api.choosing.php)將幫助你決定哪個。 – itachi 2014-10-30 10:58:04

+0

發佈整個代碼。可能你在某處重寫了'$ _POST'。 – itachi 2014-10-30 10:58:50

回答

2

嘗試這樣的事情。

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

它們可能是未定義的,因此可能是注意事項。

has a function,以幫助處理這個問題,如果該項目不存在,它返回FALSE

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

因此,而不是:

$_POST['email'] 

您可以使用:

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

等等......

在創建新用戶之前,您可能還需要檢查是否有有效的值(例如,不是空的)。