人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpでsessionの値をunsetで削除したいのですがIEでは上手くいくのですがFirefoxだと余分なものまで削除されます。

<?php
function item_delete($delete_id){
$array_index = array_search($delete_id,$_SESSION['stock_item_id']);
if($array_index !== FALSE){
unset($_SESSION['stock_item_id'][$array_index]);
}
}
?>


セッションの中身はこの様なものです。
$_SESSION['stock_item_id'][0] = 3;
$_SESSION['stock_item_id'][1] = 6;
$_SESSION['stock_item_id'][2] = 3;



上記のコードで以下を実行すると
item_delete(3);

$_SESSION['stock_item_id'][0] = 3;
$_SESSION['stock_item_id'][2] = 3;

の二つが消えてしまいます。

これはFirefox3でのみ再現されました。

どういった原因でこうなるのでしょうか?

原因が解らない場合はセッションから特定の値を削除する別の方法でも結構です。

●質問者: kuromon
●カテゴリ:インターネット ウェブ制作
✍キーワード:firefox IE PHP コード セッション
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● ctrl-v
●60ポイント

上記のスクリプトでIE、Firefox3を使い実験してみました。

File1.php セッションを書き込むだけのファイル

<?php
session_start();
$_SESSION['stock_item_id'][] = 3;
$_SESSION['stock_item_id'][] = 6;
$_SESSION['stock_item_id'][] = 3;
echo "<a href=file2.php>File2へ移動</a>";
?>

File2.php セッションを読み込んで削除

<?php
session_start();
item_delete(3);
var_dump($_SESSION);//ダンプで表示

function item_delete($delete_id){
$array_index = array_search($delete_id,$_SESSION['stock_item_id']);
if($array_index !== FALSE){
unset($_SESSION['stock_item_id'][$array_index]);
}
}
?>

結果、IE、FireFox3ともに「$_SESSION['stock_item_id'][0] = 3;」のみが消え、

さらにFile2を再読み込みすると「$_SESSION['stock_item_id'][2] = 3;」も消えました。

「item_delete(3);」で値が「3」のものを削除しているのですから、最初に$_SESSION['stock_item_id'][0] = 3;が、次に$_SESSION['stock_item_id'][2] = 3;が削除されてもおかしくありません。

Firefoxで表示した際に再読み込み等のアクションを行ったのが原因ではないでしょうか。

セッションデータはブラウザを閉じるまで有効ですので、そのような結果になったのだと推測されます。

◎質問者からの返答

解決しました。

結局、ブラウザの再読み込みが原因でした。

HTMLの箇所のimgタグのソース部分を空白にしていたら

Firefoxの場合、再読み込みを自動で行うようです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ