ユーザーのユーザー名とパスワードが合っていた時、$fstatusの値がusrのユーザーは利用者ページに。$fstatusの値がusrのユーザーは管理者ページに送りたいです。
ですが、$fstatusの中身が認識されません。$_SESSION['fstatus'] をif文に使った時もです。
echoで変数の中身を出力すると、どちらとも、usrまたはadmのどちらかの値が入っています。値が入っているのにif文で認識してもらえないのはどうしてでしょうか。
下の書き方だと、条件を判断せず、正しいユーザー名とパスワードを入力してもエラーとなってしまいます。
どうすれば$fstatusの値を認識し、if文を使えるようになるでしょうか。
php
1<?php 2session_start(); 3$id = @$_POST['ID']; // ユーザーID 4$pwd = @$_POST['PWD']; //パスワード 5 6// ログインボタンが押された場合 7if (isset($_POST["login"])) { 8 9 // IDとパスワードを結合する 10 $namedata = $id."%".$pwd; 11 12 // ファイルを開く 13 $fp = fopen("usrlist.txt", "r"); 14 while(!feof($fp)) { 15 $buffer = fgets($fp); // 1行ずつ読み込み 16 if (strstr($buffer, $namedata)) { // 結合した文字列があった時 17 $line=$buffer; 18 $word = explode("%",$line); 19 $fid = $word[0]; // ID 20 $fpwd = $word[1]; // PWD 21 $fname = $word[2]; // 名前 22 $fstatus = $word[3]; // 状態 値が admは管理者ページ。usrは利用者ページへ 23 24 $_SESSION['fname'] = $fname; 25 $_SESSION['fstatus'] = $fstatus; 26 27 28 // 認証成功 29 // ユーザー名、パスワードが合っていた 30 if ($_POST['ID'] == $fid && $_POST['PWD'] == $fpwd) { 31 // セッションIDを新規に発行する 32 session_regenerate_id(TRUE); 33 $_SESSION["USERID"] = $_POST['ID']; 34 if ($fstatus == 'adm'){ 35 header("Location: admtop.php"); // 管理者トップ画面へ移動する 36 exit; 37 } else { 38 header("Location:usrtop.php"); // 利用者トップ画面へ移動する 39 exit; 40 } 41 } 42 } 43 } 44 45?>
エラーが出るというのは自分が書いたechoの「ログインできませんでした。」という文字です。勘違いをさせてしまいすみません。
ユーザー名、パスワードがあっていて、ログインするときに、$fstatusがadmでもすべてfalseになり、usrtop.phpにとばされます。
回答3件
あなたの回答
tips
プレビュー