当我使用javascript的window.location
重定向到另一个PHP文件时,我想存储会话。但是不知何故,会话总是在服务器上丢失,而在我的本地主机上却很好。服务器仍然使用这样的IP地址:http://1.1.1.1/app/check_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
以下是来自服务器响应的HTTP标头:server response HTTP header
1条答案
按热度按时间sr4lhrrt1#
这个问题解决了,当我使用域与https,但是如果任何人可以有其他解决方案时,它仍然在服务器的IP地址,请写在下面的答案,谢谢!