$_SESSION
을 사용하여 다중 페이지 양식의 데이터를 저장하고 있습니다. 제출을 마칠 때까지 모든 것이 훌륭하게 작동하고 있었고 사람이 양식을 다시 입력하려고 할 때 동일한 양식 데이터가 복제되지 않도록 세션이 종료되었습니다. 양식을 완료하고 제출하면, 세션을 죽이고 세션 데이터를 삭제 : 나는 새로운 세션 쿠키가 설정되고 있음을 확인했다
<?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)
?>
하지만 $_POST
및 $_SESSION
:
$_SESSION = array();
setcookie(session_name(), '', time() - 42000);
session_destroy();
은 무엇 다음 것은 이것이다 세션을 다시 시작한 후 비어 있습니다. 최근 수정 (감사합니다!)에서는 데이터를 $ _POST 및 $ _SESION 배열에 프로그래밍 방식으로 푸시 (예 : $ _POST [ 'foo'] = 'bar';)하지만 URI를 통해 전달 된 변수는 무시됩니다.
정말 고맙겠습니다. 무슨 일인가.
솔루션 :
재로 세션, 올바른 코드, 알렉스 B에 의해 지적이다 :
session_start();
session_unset();
session_destroy();
session_write_close();
setcookie(session_name(),'',0,'/');
session_regenerate_id(true);
다시. $ _POST 문제 - URL을 통해 직접 정보를 입력 할 때 서버가 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_? 나는 그 말씨가 혼란스러운 유일한 사람인가? –
더 많은 코드, 더 구체적으로 작동하지 않는 부분을 볼 필요가 있습니다. – Mike
@ ColinMorelli "아무것도"는 거기에 있지 않아야한다고 생각합니다. –