![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
php初心者です
セッションの仕組みを教えてください
質問1
セッションidとセッションクッキーは同じものですか?
質問2
セッションidやセッションクッキーはデフォルトでは、ブラウザを閉じた時に削除されますか?
質問3
レンタルサーバーのphp.iniを調べてみたところ
保存場所がsession.save_path no valueでした。この場合、訪問者のパソコンにクッキーが保存されてしまうのでしょうか?サーバーに保存する方法はありますか?
質問3
session_start();でセッションを開始したときセッションidが自動で付けられるのはわかりましたが、
セッションid(MD5で作られた数字)の使い道がわかりません
質問4
セッションidはどこに利用すればいいのでしょうか?
session_start();
session_id(); //このセッションidの利用方法がわかりません
$_SESSION['id'] = $_POST['id'];
よろしくお願いします
No.3ベストアンサー
- 回答日時:
>> セッション変数でログインしているか判定している場合は、セッションidは使用しなくてもいいのでしょうか?
「既にsession_startを実行したかどうか」を確かめるためだけに使います。
正直言って自分が書いたコードならばどこで実行したかぐらい把握しているのが普通なので、ほとんどこの関数の出番は無いでしょう。ログイン状態の有無は関係ありません。
ログイン状態の有無は
if (!isset($_SESSION['logined'])) {
die('ログインせずにこのページは閲覧できません');
}
などとしてください。
No.2
- 回答日時:
【回答1】
session_start()でセッションを開始すると、
名前がsession_name()、値がsession_id()のクッキーが発行され、
PHPは以降これをもとにリモートを識別し、スクリプト側に$_SESSION変数の提供を行います。
「セッションID=セッションクッキー(の値)」で誤りありません。
【回答2】
デフォルトではそうなっています。変更することが可能です。
http://pentan.info/php/session_gc.html
【回答3】
NoValueのときは勝手に場所を決められるみたいです。
http://sinsengumi.net/blog/2010/09/php-ini%E3%81 …
セッションの仕組みから考えて、セッション変数の中身がリモートに保存されることは絶対にあり得ません。
保存されるのはセッションクッキーのみです。
【回答4】
session_name()はデフォルトでは「PHPSESSID」固定です。変更する必要は特にありません。
session_id()はsession_start()直前に自動的に決定されるので、これもあなたが操作する必要はありません。
意図的に他人のセッションを乗っ取るようなことを行いたい場合、その人のセッションIDを$idとすると、
session_start()より前にsession_id($id)としておけばそれが可能になります。しかし通常はこのようなことは行いません。
個人的にsession_id()はセッションが開始されているかどうかの判定に使うぐらいだと思います。
function is_session_started() {
return session_id() !== '';
}
回答ありがとうございます
セッション変数でログインしているか判定している場合は、セッションidは使用しなくてもいいのでしょうか?
No.1
- 回答日時:
1)
セッションクッキーにセッションIDが書かれてるってことです。
IDとCookieだから別物だけど、cookieの中身はsessionIDです。
2)
設定によりけり。
cookieなんで、ブラウザで設定ができるとそれが優先されます。
3)
そもそもcookieはブラウザがローカルに保存するもんですから、サーバにというのはありえません。
sessionはこのsessionIDをもとにPHP側の変数処理しますから、PCに保存しなければ意味がないです。
3)
別にsessionIDをPHPでごりごり使うことってあまりないです。
cookieやらでsessionIDをPHPに渡してやれば、PHPはそれをもとにデータよんでくるだけです。
4)
session_id()に関しては、cookieが無効な場合などにsessionを使うときに、sessionIDをGETなどのメソッドを使ってやりとりするときに使います。
一般的にはGET使ってURLに埋め込みますが、cookie使ったほうがいいです。cookieを使ってる場合はsession_id()は使いません。
あとはcookieが死んだあとに再度呼び出したいとか変な使い方はあるかも。普通はしないけど・・・。
本来であれば、sessionID入ってるcookieが死ぬ状態になったら$_SESSIONは破棄するべきですし。
なお、
>$_SESSION['id'] = $_POST['id'];
この部分は別にsessionIDを何かしてるわけじゃないです。
$_SESSION["id"]って要素の中にPOSTで送られてきたIDの中身を入れてるだけです。
sessionIDを明示的に指定するならsessin_id()を使います。
値としてsessionIDを入れてやれば、明示的にID指定ができます。
sessionは、ユニークなsessionIDに紐づいたデータをサーバに保存する機能です。
この保存したデータを読み出す場合には、紐づけ元のsessionIDが必要。
でも、HTTPでは基本リクエストごとに通信は切れますから、そのままだと毎アクセスごとに内容が変わります。というか一意性を保持できません。
そのため、クライアント側にsessionIDというユニークな値を保持させておき、接続毎にその値をもとにサーバ側で保存してあるデータを呼び出してくるわけです。
sessionIDを使って何かするってことは普通ないです。
回答ありがとうございます
セッション変数でログインしているか判定している場合は、セッションidは使用しなくてもいいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPのセッション有効期限について 5 2023/06/14 12:40
- PHP 「ログイン機能を持たせる」説明が気難しいです。 2 2022/10/11 02:59
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- PHP PHP でメールフォームを作成したい 1 2022/05/04 22:28
- ネットワーク OSI参照モデルの各層の役割がわかりません。 3 2023/04/21 21:12
- その他(ゲーム) ファイナルファンタジー7リメイクのnormalクリア後のセッションセレクトについて。 セッションを自 2 2023/04/11 16:52
- Google Drive 会社への勤怠届出にGoogleフォームを使用しています。 しかし、最近何故か『このサービスはビジター 2 2022/12/05 00:21
- PHP ここで言うトークンの意味を教えてください。 3 2022/08/24 03:03
- PHP $_SESSIONについて教えて下さい。 2 2023/03/02 09:18
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のサーバで運営する場合の...
-
セッションを維持したまま、サ...
-
URLのパラメータをGETのままで...
-
PHPで自動ログインの仕組み
-
セッションハイジャック(セッ...
-
PHPでログイン人数を制限したい
-
Sessionの上限について
-
サイト移動によるセッションに...
-
PHPのセッション有効期限について
-
初歩的な質問 セッション管理に...
-
Dosブロンプトでtabを出力したい
-
【C#】DataGridViewの最大列数...
-
DTOとEntityの差は何ですか。
-
「取得先」という表現について
-
TreeViewのChild Node
-
phpでcookieがうまく保存されない
-
IPアドレスとMACアドレスを取得...
-
VB.NETからVBAマクロ(引数)を呼...
-
wordの差し込み印刷で文字...
-
Windowsのマクロプログラムで、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
PHPのセッション有効期限について
-
セッション変数にパスワードを...
-
複数のサーバで運営する場合の...
-
ログインしたら他からログイン...
-
ブラウザを閉じた後もセッショ...
-
PHP SESSION変数を複数使用でき...
-
session_start()で生成されるセ...
-
セッションを維持したまま、サ...
-
HTTPヘッダー内での順番などに...
-
「ログイン機能を持たせる」説...
-
session_regenerate_id
-
Sessionの上限について
-
ログイン画面をはさんだ後、自...
-
$_SESSIONと、POSTやGETの違い
-
初歩的な質問 セッション管理に...
-
セッション変数の命名規則
-
複数ページでセッションを使わ...
-
セッション ID とセッション名...
-
管理者としてログイン
おすすめ情報