我正在使用Netbeans在PHP中註冊/登錄表單。爲了實現這一點,我在一個scripts.php文件中有我的登錄,註冊和數據庫連接功能,該文件通過一個包含調用進行加載。什麼是導致一個PHP函數打印錯誤文本blurb,但不是另一個?
好了,我的登錄功能使用此
$username = mysql_real_escape_string($_POST['username']);
$password = sha1(mysql_real_escape_string($_POST['password']));
$query = sprintf("SELECT * FROM users WHERE username='%s' AND password='%s'", $username, $password);
$link = connectDB();
$results = mysqli_query($link, $query);
連接到數據庫,並獲得滿意的結果。驗證稍後進行。
對於我的註冊邏輯,我用幾乎同樣的事情:
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
//check if user name and password match conditions
$link = connectDB();
$query = "SELECT * FROM users WHERE username = '" . $username . "'";
$results = mysqli_query($link, $query);
的註冊頁面加載罰款,但在登錄頁有錯誤文本打印說是有一個未定義的索引「用戶名」中登錄功能。這發生在頁面加載時,並且沒有函數被調用。
但是,在註冊函數中幾乎相同的佈局,我沒有得到錯誤。
這是爲什麼發生?
編輯
我發現這個問題。
我打開數據庫連接使用mysqli_connect
,但使用mysql-real_escape_string
函數。這兩個是不兼容的,並增加了所有不同的i
。
這意味着'$ _POST'沒有鍵''username''的元素... –
您需要首先檢查'isset($ _ POST ['username'])'',因爲表單尚未發佈。這很常見,答案几乎總是一樣的。 http://stackoverflow.com/search?q=%5Bphp%5D+undefined+index –
聽起來就像你檢查$ _POST ['用戶名']不管表單是否發佈。當它未被髮布時,'username'是$ _POST數組中的未定義索引。 – drew010