単純なログイン資格情報チェッカー(セッション変数を使用)を作成しようとしています。
これは私がこれまでに持っているものです:
<?php
include("dbconnect.php");
$u_name = mysql_real_escape_string($_POST['uname']);
$p_word = mysql_real_escape_string($_POST['pword']);
# *** querying all records ***
$query = mysql_query("SELECT valid_username, valid_password FROM notes_users");
while($rst = mysql_fetch_array($query)) {
//echo $rst[valid_username] . ", ";
//echo $u_name . " || ";
//echo ($rst[valid_username] == $u_name) . " || ";
//echo $rst[valid_password] . ", ";
//echo $p_word . " || ";
//echo ($rst[valid_password] == $p_word) . " || ";
//echo (($rst[valid_username] == $u_name) AND ($rst[valid_password] == $p_word));
//echo "<br/>";
if (($rst[valid_username] == $u_name) AND ($rst[valid_password] == $p_word)) {
session_start();
$_SESSION['login'] = "1";
header('Location: main.php') ;
} else {
session_start();
$_SESSION['login'] = '';
header('Location: badlogin.php') ;
}
}
?>
ここに問題があります:MySQLテーブルのリストに複数のユーザーが含まれている場合、チェックが壊れます。テーブルに最後に入力されたユーザーのみがアクセスを許可されます。最後に入力したユーザーより上のユーザーは、資格情報が正しい場合でも、誤ったログイン画面にぶつかります。なぜこうなった?誰かがこのログインチェックを実装するためのコード修正またはより良いコードを提案できますか?
編集:コメントコードは、提供された資格情報が記録されている資格情報と一致するかどうかを確認するためにテストします。スクリプトのその部分は正常に機能します。
問題が解決しました!皆さん、ありがとうございました。これを将来目にする人は、パスワードを確実に暗号化してください。これはローカルテストアプリケーションであり、ネットへのアップロードも表示されないため、私のものはプレーンテキストです。