php session 和 while 循环 : undefined index

标签 php mysql while-loop session-variables

我正在尝试通过 session 传递一个变量。我使用 while 循环来运行数据库,效果很好。如果 $username$password 正确,我总是会收到这些错误通知:

Notice: Undefined index: GELD in login.php on line

Notice: Undefined index: NIVEAU in login.php on line

为什么我会收到这些错误通知,我该如何解决?

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>

登录.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。

使用mysqli with prepared statements , 或 PDO 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 将无提示地失败。

关于php session 和 while 循环 : undefined index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35833382/

相关文章:

php - 这是有效的重定向语句吗?

javascript - Uncaught ReferenceError : funcName is not defined

mysql - 选择具有主题和帖子数的所有类别

c++ - 当从文件中使用 getline 时,While Loop 只循环一次

c++ - 浮点异常 C++ 表达式错误

php - 按表单插入多行到单个数据库中

php - 使用 .htaccess 传递变量时将 url 重写为 php 文件

php - MySQL插入语句不会插入?

java - Java 中 PHP PDO 的等价物

java - 在这段代码中,为什么第二个循环的执行速度比第一个循环慢?