2016-03-06 83 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()'引用。谢谢,*欢呼* –