- ベストアンサー
PHP session_destroyとsession_unsetの違い
session_destroyとsession_unsetの違いは何でしょうか session_unsetはセッションの開放します session_destroyはセッションを破壊しますといわれても よくわかりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
unsetはセッションに登録されている要素の開放 destroyはセッション自体の開放ですね。 destroyを読んだ後はセッションが使用できない (出来ても動作が保証されない) と言った感じで把握してください。
その他の回答 (1)
- Miki3548
- ベストアンサー率24% (22/89)
http://oguchan.s4.xrea.com/language/php/learnphp1-6.html こんにちは。 この質問を読んで気になったので 私なりに調べてみました。 (なので間違っていたらごめんなさい) session_unset: メモリ内の情報の削除 session_destroy: セッションストレージ内の情報の削除 session_register: セッション変数に登録・値の取り出し 以下のソースを参考にしてみてください。 1はSessionに値を設定しています 2はsession_registerでSession情報をメモリに取得した後、session_unsetをしています。 メモリ内の情報を削除しているので この結果は訪問回数は表示されません。 3はsession_registerでSession情報をメモリに取得した後、sesession_destroyをしています。 メモリ内の情報は削除せずセッションストレージのみ 削除しているので訪問回数は表示されます。 3実行直後 4の表示を実行すると session_registerでSession情報をメモリに取得していますが 既にsesession_destroyで削除されたので訪問回数は表示されません。 session_unset(); sesession_destroy(); セットで使うのがいいのかもしれませんね。 上手に説明できませんが 実行できる環境があったら 下記ソースを実行してみてください。 参考URLも載せます。 一読してみてください。 ------- <? if($selflg == 1){ $flgname="session_start"; session_start(); session_register("count"); $count++; }elseif($selflg == 2){ $flgname="session_unset"; session_register("count"); session_unset(); }elseif($selflg == 3){ $flgname="session_destroy"; session_register("count"); session_destroy(); }elseif($selflg == 4){ $flgname="表示"; session_register("count"); }else{ //最初にきたときは何もしない } ?> <HTML> <HEAD> <TITLE>Sessinoテスト</TITLE> <meta http-equiv=content-type content="text/html; charset=x-euc-jp"> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000"> <FORM NAME="form1" METHOD="post" ACTION="SessionTest.PHP"> 実行した命令:<? echo $flgname; ?><BR> <SELECT name="selflg"> <OPTION VALUE="1">Sessionに値設定</OPTION> <OPTION VALUE="2">session_unset</OPTION> <OPTION VALUE="3">session_destroy</OPTION> <OPTION VALUE="4">表示</OPTION> </SELECT><BR> 訪問回数は<? echo $count; ?> 回です <Input type="submit" value="送信"> </FORM> </BODY> </HTML>
お礼
大変遅くなりました。 ありがとうございました。