PEAK XOOPS - 変数の削除 in englishin japanese

変数の削除

  • You cannot open a new topic into this forum
  • Guests cannot post into this forum
Previous post - Next post | Parent - Children.1 | Posted on 2006/7/24 9:57
FutureSpy  伍長 From: 世界のどっかで  Posts: 70
GIJOEさん、こんにちは。

変数($_SESSIONなど)全てを削除したいんです。
全部とか、あるpatternが合っている変数を削除方法はありませんか。マニュアルでunset()が使えるんですが、やっぱりもっと簡単な仕方はないでしょうか。

では、今度もよろしくお願いします。
Votes:0 Average:0.00
Previous post - Next post | Parent - Children.1 | Posted on 2006/7/27 5:46
GIJOE  先任軍曹   Posts: 4110
Quote:
FutureSpy wrote:
変数($_SESSIONなど)全てを削除したいんです。
全部とか、あるpatternが合っている変数を削除方法はありませんか。マニュアルでunset()が使えるんですが、やっぱりもっと簡単な仕方はないでしょうか。
ずいぶんと無茶な希望ですね

どういう目的で削除したいのかによりますよ。
PHPのメモリ上から消したい、ということなら、ガーベジコレクションのタイミングをコントロールする必要があるでしょうし(PHPのビルドから手を入れなきゃ無理かな?)、単に、PHPから利用できなくしたいのであれば、やはりunset()でしょうね。

単純に、
unset($_SESSION)
とすれば、$_SESSIONは利用できなくなると思いますが。

Votes:0 Average:0.00

question Re: 変数の削除

msg# 1.1.1
Previous post - Next post | Parent - Children.1 | Posted on 2006/7/27 11:13
FutureSpy  伍長 From: 世界のどっかで  Posts: 70
GIJOEさん、ご返答ありがとうございます。

私がやっているのはお聞き合わせモジュールのハックなのですが。フォームを一度送ると、$_SESSIONの形でvalueを保存し、うまくいかなかったら、またフォームを埋めることは要らないのようなものです。

つまり・・・
$_SESSIONに各々の項目の値を保存 → フォームを送る → メモリーから$_SESSIONの削除
$_SESSIONに各々の項目の値を保存 → フォームを送らない → 何もしないこと

unset($_SESSION)でも削除されませんし。
何かいいアイデアあるのでしょうか。

よろしくお願いします。
Votes:0 Average:0.00

question Re: 変数の削除

msg# 1.1.1.1
Previous post - Next post | Parent - Children.1 | Posted on 2006/7/28 6:05
GIJOE  先任軍曹   Posts: 4110
Yujiさん、こんにちは。
やりたいことがなんとなく判ってきました。

この場合、$_SESSION['各項目'] について一通り処理する必要がありますね。

$_SESSIONを全削除では、ログイン情報とかも含めて削除されてしまいますから。

しかし、 unset( $_SESSION['要素'] ) だと、次回のセッション時に復元されてしまうんでしたっけ?
そんなことなかったと思いますが、もしうまくいかないなら、空文字列でも代入しておけば良いと思います。
Votes:0 Average:0.00

question Re: 変数の削除

msg# 1.1.1.1.1
Previous post - Next post | Parent - Children.1 | Posted on 2006/7/30 0:38
FutureSpy  伍長 From: 世界のどっかで  Posts: 70
GIJOEさん、返事してくれてありがとうございました。

(お聞き合わせモジュールからやっていたんですが、今はLiaiseからハックしています。まあ、どちらもDBから項目を取っているので、問題は同じなので、このスレで続けます)

そうですね。項目は$_SESSION['ele_x']です。(xはDBから取ったele_id)
問題なのは、xをどうやって見つかる。
このコードで試してみましたが、どちらも全然動作しません。
foreach($_POST['ele_'.$i] as $i){
	unset($_SESSION['ele_'.$i]);
}
OR
foreach($_POST[$i] as $i){
	unset($_SESSION[$i]);
}

DBから項目IDを全部取り込んで、そのままunsetを行いますっていう方法もありますが。
Votes:6 Average:10.00

question Re: 変数の削除

msg# 1.1.1.1.1.1
Previous post - Next post | Parent - Children.1 | Posted on 2006/8/1 7:25
GIJOE  先任軍曹   Posts: 4110
ええと、やりたいことがイマイチ理解できていないのですが、POSTされた項目はセッションからunset()すればいいんですよね?

だったらこんな感じでしょうか?
foreach( array_keys( $_POST ) as $key ) {
	if( substr( $key , 0 , 4 ) == 'ele_' ) {
		unset( $_SESSION[ $key ] ) ;
	}
}
Votes:1 Average:0.00

question Re: 変数の削除

msg# 1.1.1.1.1.1.1
Previous post - Next post | Parent - Children.1 | Posted on 2006/8/25 8:12
FutureSpy  伍長 From: 世界のどっかで  Posts: 70
GIJOEさん、ご返答ありがとうございました。
ちょっと遅くなりましたが、さっきそう試してみたら、やっぱりダメでした。
実はliaise(お聞き合わせモジュール)に確認スクリーンやgticketsを追加しようとしていました。

フォームを埋めて、Submitボタンを押す。

確認スクリーンに埋めたデータを全部表示する
※$_POSTを$_SESSIONにassign
※もう一度同じデータを$_POSTとして送る)
Submitボタンを押す

フォームを送る
※$_POSTのデータからメールを送る
  ・ うまくいったら、$_SESSIONを削除($_POSTと$_SESSIONは同じ になってしまうんですが、ここのところは、再度$_POSTではなく、$_SESSIONのデータからメールを送るようにするつもりでしたが、なぜか$_SESSIONのデータが読み込めないようで・・)
  ・ うまくいかなかったら、何もしないでまたフォームにリダイレクトします。フォームが$_SESSIONに保存されたデータから埋められる)
(ここのところは、本当は再度$_POSTではなく、$_SESSIONのデータからメールを送るようにするつもりでしたが、なぜか$_SESSIONのデータが読み込めないようで・・・それは問題にならなさそうですが)

ちょっと説明しにくいですね。
しかし、今よく考えたら、シンプルなお聞き合わせのモジュールなんて、そんな機能など入りませんね。(笑)
Votes:5 Average:10.00

question Re: 変数の削除

msg# 1.1.1.1.1.1.1.1
Previous post - Next post | Parent - No child | Posted on 2006/8/26 4:34
GIJOE  先任軍曹   Posts: 4110
基本的に$_SESSIONの利用法に問題がありそうです。

例えば、mainfile.php 読込前だと、$_SESSIONはまだ準備されていませんよ。読み出せないだけじゃなく、書き出しても意味がありません。
Votes:0 Average:0.00

  Advanced search


Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!