[英]php session and while-loop: undefined index
我試圖通過會話傳遞變量。 我使用while循環來運行一個完美的數據庫。 如果$username
和$password
是正確的,我總是得到這些錯誤通知:
注意:未定義索引:登錄時login.php中的GELD
注意:未定義的索引:登錄時的login.php中的NIVEAU
為什么我會收到這些錯誤通知,我該如何解決?
的index.html
<form id="loginform" method="post" action="login.php">
<img src="afbeelding/logo.png">
<label for="username">
Username
</label>
<input id="username" type="text" name="username"/>
<label for="password">Password</label>
<input id="password" type="password" name="password"/>
<input type="submit" value="Login">
</form>
的login.php
<?php
session_start();
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['password'];
$dbhost = 'sql7.xxx.net';
$dbuser = 'xxx';
$dbpass = 'xxx';
$db = 'xxx';
$username = $_SESSION['username'];
$password = $_SESSION['password'];
$con = mysql_connect($dbhost, $dbuser, $dbpass);
$db_found = mysql_select_db($db, $con);
$result = mysql_query("SELECT ID, USERNAME, PASSWORD FROM Game");
$username = $_SESSION['username'];
$password = $_SESSION['password'];
while ($row = mysql_fetch_array($result)) {
if($row{'USERNAME'} == $username){
if($row{'PASSWORD'} == $password){
$_SESSION['geld'] = $row{'GELD'};
$_SESSION['niveau'] = $row{'NIVEAU'};
}
else{
}
}
}
?>
SELECT ID, USERNAME, PASSWORD FROM Game
- 您沒有在查詢中選擇GELD
和NIVEAU
列。 並且不要使用已棄用的MySQL API。
將mysqli
與mysqli
准備語句一起使用,或將PDO與 mysqli
准備語句 一起使用 。
密碼
如果您對此有所了解或打算使用純文本密碼上線,請在此處停止。
對於密碼存儲,請使用CRYPT_BLOWFISH或PHP 5.5的password_hash()
函數。
對於PHP <5.5,請使用password_hash() compatibility pack
。
另請參閱password_verify()
手冊。
關於使用password_hash()
和列長度的旁注。
如果您決定使用password_hash()
或crypt,請務必注意,如果您當前的密碼列的長度低於60,則需要將其更改為(或更高)。 手冊建議長度為255。
您需要更改列的長度並重新開始使用新哈希才能使其生效。 否則,MySQL將無聲地失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.