当我使用javascript的window.location重定向到另一个PHP文件时,我想存储会话。但是不知怎么的,会话总是在服务器上丢失,而在我的本地主机上却很好。服务器仍然使用这样的IP地址:session.php。服务器正在使用CentOS。我在这里使用的根路径是/app,是造成问题的原因吗?
更新:
这是我的密码:
check_session.php
<?php
session_start();
echo "Session Path: ".session_save_path()."<br>";
echo "Session ID: ".session_id()."<br>";
$_SESSION["test"] = "test";
?>
<html>
<head>
    <script>
        function delayer(){
            window.location = "check_session_submit.php";
            exit();
        }
    </script>
</head>
<?php
if(isset($_POST["field_1"])){
    $_SESSION["field_1"] = $_POST["field_1"];
    ?>
    <body onLoad="setTimeout('delayer()', 1)">
    <?php
}
?>
        <form method="POST">
            <input type="text" name="field_1">
            <input type="submit">
        </form>
    </body>
</html>check_session_submit.php
<?php
session_start();
echo "Session Path: ".session_save_path()."<br>";
echo "Session ID: ".session_id()."<br>";
echo "Session Data: ".json_encode($_SESSION);
?>我遵循了这里给出的指示:https://stackoverflow.com/a/17242347/9858781,但仍然没有运气。尝试将会话保存到注释.../app/cgi-bin/tmp中提到的指定路径中,并使用chmod 777将权限添加到目录中,但仍然没有保存会话。我试图从/var/log/httpd/error_log中检查Apache日志,并且没有错误报告。还有什么我可以查的吗?
以下是我的服务器会话配置:
session.save_path = "/tmp"
session.save_handler = files
session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.serialize_handler = PHP
session.gc_maxlifetime = 1440
session.gc_divisor = 1000
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.sid_length = 26
session.trans_sid_tags = "a=href,area=href,frame=src,form="
session.sid_bits_per_character = 5这些是来自服务器响应的headers:服务器响应HTTP报头
发布于 2021-11-11 05:39:13
这个问题解决了当我使用域与https,但如果有人可以有其他解决方案时,它仍然在服务器IP地址,请写下面的答案,谢谢!
https://stackoverflow.com/questions/69854845
复制相似问题