我使用$_SESSION
來存儲多頁形式的數據。在我完成提交併結束會話之前,所有內容都工作得非常好,以防止在該人嘗試重新輸入表單時防止複製相同的表單數據。當表單完成並提交,終止會話和清除會話數據:
$_SESSION = array();
setcookie(session_name(), '', time() - 42000);
session_destroy();
以下是這樣的:
<?php
session_start();
include "connect-moo.php";
$learning = true;
//get any post variables and save them to the session
foreach ($_POST as $key => $val) {
$_SESSION[$key] = $val;
}
sessionDump(); //dumps session to db
//check to see if step is set (in the post eg ?step=getaquote). If not, set it to current session step
if(!isset($_POST["step"])) {
if(isset($_SESSION['step'])) {
$_POST['step'] = $_SESSION['step'];
}
}
//show the page appropriate to the current step
if ($_SESSION['mode'] == 'edit' && $_SESSION['lastpage'] != "review" && $_SESSION['step'] != "session") {
$_SESSION['lastpage'] = 'review';
getReview();
}
else {
if($_SESSION['step'] != 'session') $_SESSION['lastpage'] = $_SESSION['step'];
switch ($_POST["step"])
{
case "session":
foreach($_SESSION as $key => $val){
echo $key.": ".$val."<br>";
//phpinfo();
}
echo "Post Data<br>";
foreach($_POST as $key => $val) {
$sval = mysql_real_escape_string($val);
$skey = mysql_real_escape_string($key);
echo $skey.": ".$sval."<br>";
}
break;
case "getaquote":
getAQuote();
break;
// and so on...
default:
start();
}
}
... (all of the abovementioned functions)
?>
我已經證實,一個新的會話cookie被建立,但$_POST
和$_SESSION
重新啓動會話後爲空。使用最近的修復(謝謝!),我可以以編程方式將數據推入$ _POST和$ _SESION數組(例如$ _POST ['foo'] ='bar';),但通過URI傳遞的變量將被忽略。
我真的很感激任何想法。什麼可能會起來。
SOLUTIONS:
重新session_destroy,正確的代碼,如由Alex乙指出的那樣,是:
session_start();
session_unset();
session_destroy();
session_write_close();
setcookie(session_name(),'',0,'/');
session_regenerate_id(true);
重。 $ _POST問題 - 事實證明,當通過URL直接輸入信息時,服務器正確地將其解釋爲GET而不是POST。我修改了我的代碼以獲取所有GET & POST數據,但只會在生產中需要POST。這裏的新代碼:
//get any submitted variables and save them to the session
foreach ($_GET as $key => $val) {
$_SESSION[$key] = $val;
}
foreach ($_POST as $key => $val) {
$_SESSION[$key] = $val;
}
感謝您的幫助!
他們_are_空或_aren't_?我是唯一一個被措詞混淆的人嗎? – 2013-02-20 20:54:34
需要查看更多代碼,更具體地說,不工作的部分。 – Mike 2013-02-20 20:55:49
@ColinMorelli我認爲「沒有」不應該在那裏。 – 2013-02-20 20:58:32