2010-12-17 41 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