- ベストアンサー
ログイン状態の確認方法について
- ログイン状態の確認方法のセキュリティを高めるには、何をチェックしないといけないのでしょうか?
- PHP初心者の方へ、ログイン機能を備えたウェブサイトでログイン状態を確認する方法について教えます。
- ログイン機能を備えたウェブサイトのログイン状態を確認するには、$_SESSION変数にウェブサイトの名前やユーザー固有の文字列を格納してチェックすることが一般的です。安全で負担のかからない方法です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
単純に、$_SESSIONの内容が、 $_SESSION['username'] = "userの名前"; と、一次元の配列で格納し、別のアプリケーションでも、同じ配列名でソレを扱うから混ざってしまうということですので、 $_SESSION['application_name']['username'] = "userの名前"; というように二次元配列にして、 application_nameの部分は、そのセッションを利用する各アプリケーションの名前をつけてやれば、良いのではないでしょうか。 例えば、 ブログアプリケーションがあったとして、それのログイン情報を格納する先を $_SESSION['blog']['username'] = "userの名前"; スケジュール管理帳アプリケーションであれば $_SESSION['schedule']['username'] = "userの名前"; と格納してやるとか。 という方法では問題がありますか?
その他の回答 (2)
- hogehoge78
- ベストアンサー率80% (433/539)
単純に、 $_SESSION['username']; としている部分を、 $_SESSION['application_name']['username']; とすれば良いのではないでしょうか。 また、それが面倒ということであれば、 http://php.net/manual/ja/function.session-set-cookie-params.php こちらで、セッションIDを格納するcookieの制御をスレば良いのではないかと思います。
お礼
ご回答ありがとうございます。 返事が遅くなりすみませんでした。 $_SESSION['application_name']['username']は具体的に何を含んで、指定の時はどうやってするんですか? $_SESSION['application_name']= (アプリの名前) ; $_SESSION['username']= (ユーザ名); のように値を割り当てますか?それとも直接 $_SESSION['application_name']['username']= (アプリの名前), (ユーザ名); ですか グーグルで探してみたんですが、$_SESSION['application_name']['username']という形が見つかりませんでした。 お手間をおかけしますが、また宜しくお願いします。
- yambejp
- ベストアンサー率51% (3827/7415)
>サーバーの別のフォルダにあるアプリも「ログインしている」と判断し ユーザー管理の方法によるのでは? データベースで管理していれば、アクセス権限に柔軟な幅をもたせることが できると思いますが $_SESSION['username']の値があるかどうかではなく、$_SESSION['username']の 値に応じたアクセス範囲など設定する感じでしょうか・・・
お礼
回答ありがとうございます。 はい、データベースでユーザーを管理しています。 しかし、やはり $_SESSION['username']がデータベースにあるほか、ほかの値に頼る必要があると思います。たとえば、セッション番号とか、ユーザーがログインしている時に無作為の値をデータベースに格納して、ログアウトするまで、ページを移動するごとにユーザー名とその値が合っていることを確認したほうがいいんじゃないかと思います。 具体的にほかに簡単かつ安全な管理方法があれば、ご意見をまた聞かせてください。 おっしゃるアクセス権限は具体的にどうやって確認し、ユーザーがユーザーである、つまりセッション乗っ取りを防げるのでしょうか?
お礼
ありがとうございます。混ざらなくなりました。本当に助かりました。 今後とも宜しくお願いします。