当前位置: 首页 > 面试题库 >

重定向后PHP会话丢失

黎曾笑
2023-03-14
问题内容

如何解决在PHP中重定向后丢失会话的问题?

最近,我遇到了一个非常常见的问题,即在重定向后丢失会话。在搜索该网站后,我仍然找不到任何解决方案(尽管这是最接近的解决方案)。

更新资料

我找到了答案,我想将它发布在这里,以帮助遇到同样问题的任何人。


问题答案:

首先,执行以下常规检查:

  1. 确保session_start();在任何会话被调用之前被调用。因此,一个安全的选择就是将其放在页面的开头,紧接着在开始<?php声明之后,再放在其他任何地方。还要确保在打开<?php声明之前没有空格/制表符。
  2. 在后header重定向,使用结束当前的脚本exit();(其他人也建议session_write_close();,并session_regenerate_id(true),你可以尝试那些为好,但我会用exit();
  3. 确保在用于对其进行测试的浏览器中启用了cookie。
  4. 确保register_globals已关闭,您可以在php.ini文件上并使用进行检查phpinfo()。有关如何关闭它的信息,
  5. 确保您没有删除或清空会话
  6. 确保您的$_SESSION超全局数组中的密钥不会在任何地方被覆盖
  7. 确保您重定向到相同的域。因此,从重定向www.yourdomain.comyourdomain.com不会继续进行会话。
  8. 确保您的文件扩展名是.php(确实发生了!)

现在,这些是最常见的错误,但是如果他们没有解决问题,那么问题很可能与您的托管公司有关。如果一切正常,localhost但不能在您的远程/测试服务器上运行,则很可能是罪魁祸首。因此,请检查您的托管服务提供商的知识库(也可以尝试其论坛等)。对于FatCow和iPage之类的公司,它们要求您指定session_save_path。像这样:

session_save_path('"your home directory path"/cgi-bin/tmp');
session_start();

(将“您的主目录路径”替换为实际的主目录路径。这通常在控制面板内(或等效菜单中),但是您也可以test.php在根目录上创建一个文件并输入:

<?php echo $_SERVER['SCRIPT_FILENAME']; ?>

“ test.php”之前的位是您的主目录路径。当然,请确保该文件夹确实存在于您的根目录中。(某些程序在同步时不会上传空文件夹)



 类似资料:
  • 我正在做一个游戏,需要一个大堂的玩家,但没有帐户。有点像游戏,间谍。我正在使用Meteor会话来了解哪个玩家加入了大厅,这样我就可以返回该特定玩家的正确数据。我有一个join.js组件,用户在其中输入大厅访问代码和用户名。此组件还将用户重定向到大厅。join.js位于路由/join,而lobbies位于路由/:lobby。下面是join.js handleSubmit方法,它接受用户输入并将其放入

  • 我有一个回调函数,检查我的登录详细信息是否正确-如果他们是错误的,它返回一个错误(这是工作正常)。如果细节是正确的,它应该设置会话

  • 我在spring Boot1.2.3 web应用程序中使用spring security 4.0.1(也使用Spring-Session1.0.1,但这与本案无关)。 每当登录的用户会话过期时,Spring就会检测到无效的会话,并将用户重定向到“.invalidsessionURL(”/session/error/invalid“)” 然而,我只想被重定向,如果目标链接在私人区域内,也不是公共区域

  • 我使用的是和和。一切都很好,但是当会话超时的时候,我会得到以下错误”,因为我已经在布局的main.gsp文件中调用了session变量。现在,我希望在每次会话超时后重定向到登录页面,并且不显示错误页面。要在会话超时后重定向,我已经在文件中这样做了 但是有这么多页,所以很难写每一页。还有其他的方法做这件事吗?请帮忙。

  • 每个人登录后,我一直无法使用Laravel重定向。连接工作,在我登录后,它重定向到一个空白页面,但如果我更改url路径,我可以访问不同的网页。我们将不胜感激!我正在使用LDAP进行连接,它正在工作。 请让我知道,如果有任何其他代码,我应该提供。 非常感谢。 (重定向IfAuthenticated.php) 命名空间应用程序\ Http\中间件; 使用闭包;使用Illumb\Support\Faca

  • 我在global.asax中尝试了以下代码,但不起作用,并导致Application_Error(“响应在此上下文中不可用。”)。