プロが教えるわが家の防犯対策術!

session_destroyとsession_unsetの違いは何でしょうか
session_unsetはセッションの開放します
session_destroyはセッションを破壊しますといわれても
よくわかりません。

A 回答 (2件)

unsetはセッションに登録されている要素の開放


destroyはセッション自体の開放ですね。

destroyを読んだ後はセッションが使用できない
(出来ても動作が保証されない)
と言った感じで把握してください。
    • good
    • 0
この回答へのお礼

大変遅くなりました。
ありがとうございました。

お礼日時:2004/04/03 01:45

http://oguchan.s4.xrea.com/language/php/learnphp …

こんにちは。
この質問を読んで気になったので
私なりに調べてみました。
(なので間違っていたらごめんなさい)

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>

参考URL:http://oguchan.s4.xrea.com/language/php/learnphp …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!