【问题标题】:Session works fine on localhost, but not on webhost server会话在 localhost 上工作正常,但在 webhost 服务器上不能正常工作
【发布时间】:2014-07-02 12:10:00
【问题描述】:

我编写了一个登录脚本,它在我的测试服务器 (localhost) 上运行良好,但是当我将它上传到我的虚拟主机的网络服务器时它就无法运行。

我已将其缩小为会话问题 - 成功登录后,会话设置成功,并且用户被重定向,但是当用户被重定向到加载的页面时,会话显然消失了。

我宁愿不发布完整的源代码(还),但这是它的逻辑:

login.php:显示表单,提交给自己,检查用户/密码并设置 $_SESSION['loggedIn'] = true;然后重定向到 index.php

index.php:检查 $_SESSSION['loggedIn'] == true(如果未设置,或者为 false,则重定向回 l​​ogin.php)。

所以问题是,当用户成功登录并在 login.php 中设置会话后重定向到 index.php 时,$_SESSION['loggedIn'] 甚至不存在。

有没有人知道什么可能导致这样的事情? Web 主机服务器确实支持 cookie/会话 - i made a very simple test,它可以工作,所以我想我的代码一定有什么东西...... :( 但我真的不明白,因为没有什么可以删除 cookie(logout.php 脚本除外)。

【问题讨论】:

  • 您是否允许来自远程域的 cookie? PHP 通常配置为将您的 session_id 存储在您机器上的 cookie 中,因此如果您不允许来自您的虚拟主机域的 cookie,则 session_id 将不会从 login.php 存储,因此无法在 index.php 上调用。

标签: php session cookies


【解决方案1】:

我已经调试了 2 个小时,和往常一样,我在写了一篇关于它的长篇文章后就发现了问题... :-/

无论如何,问题是我在 session_start(); 之前包含了一个 class.db.php 文件 我想,由于某种原因,该文件在远程服务器上执行时会输出一些不可见的东西。可能是编码问题?

无论如何,我只是将 session_start() 移到包含该文件的上方,现在一切正常... :)

【讨论】:

  • 无论如何。下次来的时候,请提供一些代码。只有逻辑没有多大帮助。谢谢!
【解决方案2】:

您从客户端登录后更改了服务器日期,因此会话过期,只需清除客户端计算机的历史记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 2014-06-23
    • 2013-10-01
    • 1970-01-01
    • 2018-03-07
    相关资源
    最近更新 更多