0

重複の可能性:
mysql_fetch_array() は、パラメーター 1 がリソースであると想定しており、select でブール値が指定されています

このSQLコマンドを実行すると:

$sql = "SELECT `id`, `password`, `salt` FROM `users` WHERE `username` = '".mysql_real_escape_string($_POST['name'])."'";

次のエラーが表示されます。

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /index.php on line 8

その行は、上記の SQL コマンドの mysql_fetch_assoc です。

saltSELECTからを削除すると機能します。

しかし、salt選択したものが必要なので、データベースと SQL コマンドで名前を変更してみました。

しかし、何らかの理由でそれもうまくいきませんでした。

次に、データベース フィールドを削除して、作り直しました。しかし、まだ運がありません。

注:コマンドは実行されますが、何らかの理由でまだこのエラーが発生します..データベースでの選択からいくつかの情報をエコーアウトしようとしましたが、うまくいきました。実際には、選択したすべての情報が表示されsaltますが、エラーは引き続き表示されます..何かアイデアはありますか?

ページ全体のソース:

        if (isset($_POST['login'])) {
            $msg = "Brugernavn og kodeord passer ikke sammen.";
            $sql = "SELECT `id`, `password`, `salt` FROM `users` WHERE `username` = '".mysql_real_escape_string($_POST['name'])."'";
            //echo $sql;
            $query = mysql_query($sql) or die(mysql_error());
            if (mysql_num_rows($query)) {
                while ($row = mysql_fetch_assoc($query)) {
                //print_r($row);
    /*          echo "<pre>";
                print_r($row);
                echo "</pre>";*/
                    $password = md5(hash("sha512",mysql_real_escape_string($_POST['pass']), $row['salt']));
    /*              echo "<pre>";
                    echo $password;
                    echo "</pre>";
                    echo "<pre>";
                    echo $_POST['pass'];
                    echo "</pre>";*/
                    if ($password == $row['password']) {
                        $key = md5( rand(0,1000) );
                        //echo $key;
                        $sql = "UPDATE `users` SET `key` = '".$key."' WHERE `id` = '".$row['id']."'";
                        $query = mysql_query($sql);
                        //login success
                        $_SESSION['key'] = $key;
                        $_SESSION['id'] = $row['id'];
                        if (isset($_POST['remember']) && $_POST['remember'] == 1) {
                            $_COOKIE['key'] = $key;
                            $_COOKIE['id'] = $row['id'];
                        }
                        $msg = "Du er nu blevet logged ind.";
                    }
                }
            }
        }
4

0 に答える 0