ログイン後、URLを直接入力するとログアウトされてしまう。 PHPでDBに接続し、ログイン機能を作成しています。
ログイン後、URLを直接入力するとログアウトされてしまう。 PHPでDBに接続し、ログイン機能を作成しています。 ログイン画面(login.php)が出て、メールアドレスとパスワードが一致すると、 トップ画面(index.php)に遷移します。 またその後、編集をクリックすると編集画面(edit.php)に遷移します。 上記の内容は問題なく動いているのですが、 ログインした状態でURLに直接トップ画面のURL、「https://~~~~~~.index.php」と入力するとlogin.phpに戻ってしまいます。 また、編集画面で「https://~~~~~~.edit.php」と入力すると、 編集画面には留まれますが、元々出ていた編集したい元データが空欄になってしまいます。 ログイン状態が切れてしまっていると思うのですが、 session_destroy();を記述していないのにどうして切れてしまうのでしょうか? 確認すべき事項がわからず、自己解決ができません…。 どんなことが考えられるでしょうか? コードを見ないとなんとも言えないと思いますが、申し訳ありません。
一部抜粋してコードを記載致します。 index.php <?php session_start(); require_once(ROOT_PATH .'Controllers/Controller.php'); (インスタンス化の記述) $referer = $_SERVER['HTTP_REFERER']; $loginUrl = 'login.php'; $indexUrl = 'index.php'; $editUrl = 'edit.php'; if(!(strstr($referer, $loginUrl) || strstr($referer, $indexUrl) || strstr($referer, $editUrl))){ header('Location: login.php'); exit; } if(!isset($_SESSION['role'])){ header('Location: login.php'); exit; } 以下データやHTMLの記述
PHP・144閲覧
ベストアンサー
>if(!(strstr($referer, $loginUrl) || strstr($referer, $indexUrl) || strstr($referer, $editUrl))){ 何故アテに出来ない $referer($_SERVER['HTTP_REFERER'])をチェックしているのでしょうか? #ちゃんとセッションが扱えているなら、セッションの #チェックだけでいいと思いますが・・・ 環境によっては「まったくログインできない」怖れもあります。このチェックはやめましょう。
質問者からのお礼コメント
お二人ともご回答ありがとうございました。 セッション管理の方法が間違っていたんですね…。 もっと煩雑にならないよう心がけます。 ありがとうございました。
お礼日時:7/1 9:51