Php 重定向到其他页面后检索会话_id()时出错
这是一个非常棘手的问题 我想使用Post/Redirect/Get模式在PHP中开发一个登录表单。包含登录表单的页面如下所示:Php 重定向到其他页面后检索会话_id()时出错,php,session,redirect,Php,Session,Redirect,这是一个非常棘手的问题 我想使用Post/Redirect/Get模式在PHP中开发一个登录表单。包含登录表单的页面如下所示: <?php if (try_login()) { session_regenerate_id(); session_start(); header('Location: main.php'); exit(); } ?> <html> <head> <!-- etc, etc -
<?php
if (try_login()) {
session_regenerate_id();
session_start();
header('Location: main.php');
exit();
}
?>
<html>
<head>
<!-- etc, etc -->
</head>
<body>
<form action="<?php echo htmlentities($_SESSION['PHP_SELF']); ?>" method="post">
<!-- etc, etc--></head>
</form>
</body>
</html>
我希望在成功登录后被带到
main.php
并显示我的session\u id()
。但是,当我自己测试登录表单时,我被重定向到main.php
,但是我的session\u id()
没有出现。我的代码有什么问题?您需要在main.php
中调用session\u start()
,然后才能检索会话。除非您使用的是session.auto\u start
您需要使用session\u start()显式启动会话
根据会话数据在所有页面上显示。请原谅使用了不恰当的语言,但是。。。我勒个去?我是否必须使用session\u start()
,即使我实际上没有启动,而是在恢复会话?编程时不要假设,请阅读文档。记住HTTP是无状态的。这意味着服务器不知道您在上一页调用了什么。它只知道它有一个页面请求。因此,是的,在对会话执行任何操作之前,必须调用会话_start()。
<?php
echo htmlentities(session_id());
?>