いつもお世話になっております。
php&mysqlにて会員制サイトを作成中です。
sessionを用いて期待する動作は実現できたのですが、どうしても理解できないことがあります。
sessionについて色々と調べますと、
1)サーバーサイドで処理する方式(URIに埋め込む)
2)クライアントサイドで処理する方式(cookieに渡す)
となっております。
ところが、
作成中のサイトでは、cookieを利用していないのですが、URIにも何も付加されていません。
それでも、ログイン・ログオフ状態はそれぞれ望む通りに表示されています。
これは一体どういうことなのか、お分かりになる方がいらっしゃいましたらご回答をお願い致します。
以下に大まかなコードを。
ログイン直後のページ
session_start();
session_unset();
if(!isset($_SESSION["user_session"])){
session_register("user_session");
$_SESSION["user_session"]=$hoge;
}
その他のページ
session_start();
$hoge=$_SESSION["user_session"];
if(!empty($hoge)){
echo "ログインしてません";
}else{
echo "ログインしてます";
}
以上のようなものです。
マイページはIDとパスワードで認証しており、本人以外は見ることができないのですが、その他のページはログインすれば誰でも見ることができるようになっています。
現段階で特に暗号化などの処理は施しておりませんが、セキュリティー関連は今後の作業として予定しております。
個人サイトを作り始めて半年で、色々と不勉強な部分、理解が不十分な部分がございます。
分かりやすく説明いただけると助かります。
No.1ベストアンサー
- 回答日時:
文面を見る限り、$_SESSION変数の概念が理解されてないのかな、と思われます。
もし私の認識違いでしたらすみません。$_SESSIONという変数が、サーバサイドでクッキーの役割をしてくれる、と思ってもらってよいかと思います。
私が知る限り「画面遷移しても一定の変数=値を保持し続ける」方法として
・サーバサイドで処理するURI(?in_ymd=20080225&kbn=1 など)
・クライアントのクッキーに渡す
・サーバサイドの$_SESSION変数を使用する
の3種類があります。
ソースを拝見する限り、3番目の$_SESSION変数を利用してうまくセッションが確立されているかと思います。cookieを利用していなく、URIにも何も付加されていなく、「どうしてなんだろう?」と思われるということはセキュリティ的にもOKではないかと思います。URLに平文で表示されては危険ですからね。
$_SESSION変数は上手に使うと効果的です。いろいろな場所で使用することを見越し、場面場面でクリアしやすい2次元連想配列($_SESSION['auth']['login_id']のように)にすることをおすすめします。
また認証情報だけでなく、Form入力値の受け渡しにも利用できます。
ちなみに$_SESSION変数には有効保持時間があります(確かデフォルトで25分ほど)。無操作で30くらい放置すると、自動クリアされます。
いずれにしても$_SESSION変数を使用することが常道となってますので、知らず知らずのうちに、マスターされてしまったのかな、と思います。
お礼が遅くなり、大変失礼致しました。
ご指摘の通り、$_SESSION変数に対する理解不足でした。
質問文中にて触れた2つの方式ではなく、$_SESSIONはサーバーサイドで変数を保持できるものだったのですね。
2次元連想配列についても調べて活用してみたいと思います。
これでユーザー管理ができそうです。
本当にありがとうございました。
あ、質問文中の「ログインしてます」「ログインしてません」は逆でした。すみません^^;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セッションのワンタイムチケッ...
-
URLのパラメータをGETのままで...
-
Railsのセッションについて
-
The session id contains inval...
-
PHPのセッションと乱数について
-
セッションハイジャックの対処...
-
「ログイン機能を持たせる」説...
-
PHP cookieの値が更新されない...
-
header と session の順番
-
セッションを利用するとフォー...
-
セッション中の1つの変数をuns...
-
DTOとEntityの差は何ですか。
-
Dosブロンプトでtabを出力したい
-
shシェルスクリプト 空白行の...
-
wordの差し込み印刷で文字...
-
【C#】DataGridViewの最大列数...
-
findstrのerrorlevel
-
「取得先」という表現について
-
switch()文で値の大小比較
-
phpでcookieがうまく保存されない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
ログイン画面をはさんだ後、自...
-
POSTで情報を他のサーバーに渡...
-
二重ログイン管理について
-
ブラウザを閉じた後もセッショ...
-
セッションのスコープ(有効範...
-
$_SESSIONと、POSTやGETの違い
-
セッション ID とセッション名...
-
【PHP】SESSION変数の競合を...
-
クッキーを使わないセッション...
-
テーブルデータをSESSIONに保存...
-
PHP cookieの値が更新されない...
-
PHPSESSIDの表示
-
別ブラウザ間でセッションの値...
-
複数ページでセッションを使わ...
-
session_start()で生成されるセ...
-
セッションについて
-
PHP SESSION変数を複数使用でき...
-
セッション変数にパスワードを...
-
セッションのワンタイムチケッ...
おすすめ情報