簡體   English   中英

php session和while-loop:未定義的索引

[英]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 - 您沒有在查詢中選擇GELDNIVEAU列。 並且不要使用已棄用的MySQL API。

mysqlimysqli准備語句一起使用,或將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM