ログインさせるための「login.php」と、ログイン情報を管理する「user_data_0529a.csv」を用意したのですが、ユーザー名とパスワードが上手く判定できません。
まずは、下記にコードを示します。
PHP
1<?php 2session_start(); 3 4$error_message = ""; 5 6if(isset($_POST["login"])) { 7 8 if ($handle = fopen("user_data_0529a.csv", "r")) { 9 while ($data = fgetcsv($handle)) { 10 echo $_POST["user_name"].' = '.$data[0].' '.$_POST["password"].' = '.$data[1].'<br/>'; 11 if ($_POST["user_name"] === $data[0] && $_POST["password"] === $data[1]) { 12 $_SESSION["user_name"] = $_POST["user_name"]; 13 $login_success_url = "index.php"; 14 header("Location: {$login_success_url}"); 15 exit; 16 } 17 } 18 fclose($handle); 19 $error_message = "<p><strong>※ID、もしくはパスワードが間違っています。<br> もう一度入力して下さい。</strong></p>"; 20 }else{ 21 $error_message = "<p><strong>※ユーザーデータが破損している可能性があります。</strong></p>"; 22 } 23} 24?>
CSVファイルのフォーマット
user_data_0529a.csv
1○○○○○○,○○○○○○○○ 2○○○○○○○,○○○○○○○○
起きている問題
whileループにて、CSVファイルに格納されているログイン情報を順番に取り出し、if文で判別するといったプログラムなのですが、ログイン情報が一致しているにもかかわらず、ログインに失敗します。
PHP
1$error_message = "<p><strong>※ID、もしくはパスワードが間違っています。<br> もう一度入力して下さい。</strong></p>";
が実行されてしまいます。
PHP
1echo $_POST["user_name"].' = '.$data[0].' '.$_POST["password"].' = '.$data[1].'<br/>';
上記コードでデバックしてみましたが、CSVのデータは読み込まれていますし、ブラウザーではしっかり一致したものが表示されます。
なぜif文での判定はfolseになってしまうのでしょうか?
わかる方いらっしゃいましたら、ご教授していただきたいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。