2016-03-06 80 views
1

我想通過一個會話傳遞一個變量。我用一個while循環來運行一個完美的數據庫。在騸的login.php在線php會話和while循環:undefined索引

注意:如果$username$password是正確的,我總是把這些錯誤通知:

注意:未定義指數未定義指數:在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{ 
      } 
     } 
    } 
?> 
+0

您使用的是哪個版本的PHP? – PVL

+0

我正在使用php 5.0 – DNA

+0

'$ row {'GELD'}'=>'$ row ['GELD']'等同於'$ row {'PASSWORD'}'不使用大括號。使用括號 –

回答

3

SELECT ID, USERNAME, PASSWORD FROM Game - 你有沒有在您的查詢選擇GELDNIVEAU列。 並且不要使用已棄用的MySQL API。使用mysqli with prepared statementsPDO with prepared statements

密碼

如果你生活在這種或打算與明文密碼會現場,停在那兒。

對於密碼存儲,請使用CRYPT_BLOWFISH或PHP 5.5的password_hash()函數。

對於PHP < 5.5使用password_hash() compatibility pack

另請參考password_verify()手冊。

旁註有關使用password_hash()和列的長度。

如果您決定使用password_hash()或crypt,請注意,如果您當前的密碼列的長度低於60,則需要將其更改爲(或更高)。本手冊建議長度爲255.

您需要更改列的長度,並使用新散列重新開始以使其生效。否則,MySQL將無聲無息地失敗。

+0

PDO一路^^不要忘記password_verify:P – PVL

+0

@PVL確實。增加了'password_verify()'引用。謝謝,*歡呼* –