簡體   English   中英

標頭重定向后,PHP會話變量丟失

[英]PHP session variables getting lost after a header redirect

我無法弄清楚。 有時在重定向之后(請參見下面的代碼),會話變量會丟失。 有任何想法嗎?

請注意,腳本最初是使用?p = 1&u = 2&k = 3調用的。 如您所見,腳本將重定向到其自身。 會話變量在重定向后會丟失。

<?php

session_start();

if ((isset($_SESSION['p'])) and ($_SESSION['p'] != "")) {
    // do something
} else {
    $_SESSION['p'] = $_GET['p'];
    $_SESSION['w'] = $_SERVER["HTTP_HOST"];
    $_SESSION['u'] = $_GET['u'];
    $_SESSION['k'] = $_GET['k'];

    header("Location: http://".$_SESSION['w'].$_SERVER['PHP_SELF']."");
    exit();
}

?>

干杯

復制並粘貼您的代碼,對我來說效果很好。 <?php -tag之前是否可能有空格或其他內容?

我不確定為什么會這樣。

可能您的php.ini文件配置有php.ini

否則,您沒有正確的session.save_path或寫權限。

但是,如果問題仍然存在,請嘗試以下方法:

<?php

session_start();

if (!$_SESSION['p']) {
    $_SESSION['p'] = $_GET['p'];
    $_SESSION['w'] = $_SERVER["HTTP_HOST"];
    $_SESSION['u'] = $_GET['u'];
    $_SESSION['k'] = $_GET['k'];
}

//code comes here

?>

我認為這是應該做的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM