※ ChatGPTを利用し、要約された質問です(原文:phpのプログラムに関する質問です。)
PHPのログインシステムでパスワードが違うエラーが発生する理由と改善方法
このQ&Aのポイント
PHPのログインシステムで、パスワードが違うエラーが発生する理由と改善方法について質問があります。
ログインシステムのプログラムで、登録してある名前とパスワードを入力すると、最初は「パスワードが違います。」と表示されますが、もう一度同じ情報を入力するとログインできるようになります。
現在のログインシステムのプログラムに問題があり、一度目のログイン時にパスワードが違うエラーが発生してしまう理由を教えてください。また、改良点やアドバイスもあれば教えてください。
今、ログインシステムを作っている途中なのですが、以下のプログラムでやってみると、
登録してある名前とパスワードを打ち込むと、最初「パスワードが違います。」と出て、
戻ってもう一度同じものを打ち込むと、うまく先へ進みます。
(login.php)のファイルで↓
<html>
<head>
<title>ログイン画面Var.1</title>
</head>
<body >
<form method="POST" action="get_login.php">
<table>
<tr>
<td>名前:</td>
<td><input type=text name="name"></td>
</tr>
<tr>
<td>パスワード:</td>
<td><input type=password name="pass"></td>
</tr>
<tr>
<td></td>
<td>
<input type=submit value="ログイン">
<input type=reset value=" 取消 ">
<input type=submit name="regist" value="新規登録">
</td>
</tr>
</table>
</form>
</body>
</html>
(get_login.php)のファイルで↓
<?
setcookie("name2", $_POST["name"]);
$contents = @file_get_contents('name_list.txt');
//ファイルから読み込んだ文字列
$name=$_COOKIE['name2'];//名前
if($_POST["regist"]=="新規登録"){
readfile("regist.php");
}else{
if(ereg('<name>'.$name.'</name><pass>[a-z0-9]+</pass>',$contents,$a)){
$pass=ereg_replace('[^ ]+<pass>','',$a[0]);
$pass=ereg_replace('</pass>','',$pass);
if($pass==$_POST['pass']){
readfile("phptxtwrite2.php");
}else{
echo ("パスワードが違います。<br>".
"<a href=\"./login.php\">戻る</a>");
}
}else{
echo("登録されていません。<br>".
"<a href=\"./login.php\">戻る</a>");
}
}
?>
(name_list)のファイルで↓
<name>会</name><pass>ss</pass>
<name>さめ</name><pass>kk</pass>
<name>やす</name><pass>ii</pass>
<name>のり</name><pass>kk</pass>
<name>あ</name><pass>a</pass>
<name>あああ</name><pass>aaa</pass>
<name>dda</name><pass>ds</pass>
こんな感じなのですが、なぜ一発でうまくいかないのでしょうか?宜しくお願いします。
また、改良点などがありましたら、アドバイス宜しくお願いします。
お礼
ありがとうございます。 ご指摘通り直したところ、即効解決しました!