ログイン後のユーザーを識別する方法 - PHPプロ!Q&A掲示板
現在、ポータルサイト構築を行っています。
ログイン画面からログイン後、
それぞれのユーザーの専用ページに移行する仕組みです。
ログイン後、ユーザページまでは間違いなく進み、
ユーザーページにログインせずに直接アクセスしようとすると、ログイン画面に
リダイレクトするようにはなっています。
ただ現状、ログインユーザー同士が、お互いの専用ページにアクセスできてしまっています。
ログインユーザーを識別し、他のユーザーの専用ページにはアクセスできないようにする
必要があるのですが、どのように記述を変えれば良いかわからない状況です。
- session_start();
- $_SESSION = array();
以下のように、usernameとPWを書き込んだ別ファイルを指定しています
- $data_file = "./d_file.dat";
このファイルの中には、以下のように各ユーザーのusernameとPWが記載されています。
member_name1,password1,
member_name2,password2,
以下にコード続きます。
- $error_message = "";
- if(!isset($PHP_SELF)){ $PHP_SELF = $_SERVER["PHP_SELF"]; }
- if(!isset($action)){ $action = $_POST['action']; }
- if(!isset($member_name)){ $member_name = $_POST['member_name']; }
- if(!isset($password)){ $password = $_POST['password']; }
- if (isset($_POST["login"])) {
- $p_data = file($data_file);
- $p_flag = 0;
- for($i=0; $i<count($p_data); $i++){
- list($id,$pass) = split(",", $p_data[$i]);
- if($id == $member_name && $pass == $password){
- $p_flag++;
- }
- }
- if($p_flag > 0){
- $_SESSION["login_name"] = $_POST["member_name"];
ユーザ専用画面へブラウザをリダイレクトします
- header("location: http://〜/$member_name/");
- exit;
- session_start();
- $old_session_id = session_id();
- session_regenerate_id();
- unlink(session_save_path() . '/sess_' . $old_session_id);
- if (!isset($_SESSION["login_name"])) {
- header("location: http://〜/");
- exit;
- }
このようにログイン画面を設置。
ログインすると、URLの末尾にmember_nameのあるページに遷移します。
ログイン後のページには以下のように記述しています。
この記述では、各ユーザーを識別できていないのでしょうか?
試行錯誤しておりますが、うまくいきません。
何卒アドバイスを、よろしくお願いいたします。
この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。





ページのトップへ


shimix様、いつもわかりやすい説明をありがとうございます。 「includeはエディタでコピペした状態と同じ」 この表現、私も授業で使わせていただきたいと思います。