2010-12-17 44 views
2

示例我有100個表單域。每個字段都會有錯誤會話。當表單提交成功,我想取消設置哪個字用$_SESSION['submit_']

首先開始的任何會議上,我可以這樣做

unset($_SESSION['submit_first_name'], 
$_SESSION['submit_last_name'], 
$_SESSION['submit_status'], 
$_SESSION['submit_mobile'], 
$_SESSION['submit_category']); 

但太長。

如果我不喜歡

session_destroy(); 

然後會殺了我的登錄會話

可能取消設置會話字與[submit_']開始?

讓我知道:)

+3

它應該是'$ _SESSION ['submit'] ['last_name']',愚蠢的 – 2010-12-17 20:34:51

回答

8

你可以做這樣的事情:

foreach($_SESSION as $key=>$value) 
    if (strpos($key, 'submit_') === 0) 
    unset($_SESSION[$key]); 

或者你可以重新安排你的$ _SESSION像這樣的變量:

$_SESSION['submit']['first_name']; 
$_SESSION['submit']['last_name']; 
$_SESSION['log']['some_log']; 
. 
. 
. 
unset($_SESSION['submit']); 
+0

我不明白。如果你想用一個以'submit_'開頭的密鑰取消所有的entrys,那麼這個條件不應該是'if(strpos($ key,'sumit _)!== FALSE)「? - .-沒關係只是想出來......發佈後1分鐘 – 2010-12-17 21:06:24

+0

+1重新安排我的會議。酷;)只知道它lol – Blur 2010-12-17 21:20:51

0

,如果你不能確定使用通配符,但你可以列出它們在一個命令,如果這可以幫助你...像這樣:

unset($_SESSION['submit_last_name'], $_SESSION['submit_status'], $_SESSION['submit_mobile'], etc...); 

但我不知道這是否讓你有任何地方......至少它不是多線。我會研究使用通配符,但你可以谷歌以及我可以:)

+0

哦,我更喜歡styu的答案更好...好主意。 – prilldev 2010-12-17 20:39:16