【问题标题】:Session is not working on my site会话在我的网站上不起作用
【发布时间】:2012-06-02 17:42:55
【问题描述】:

我正在网站上使用会话,但无法获取其他页面上的数据。我已经在其他主机上使用了代码,并且在其他主机上运行良好,所以我认为是主机问题。

我用来保存会话的代码是:

session_start();

$_SESSION["std_id"] = 'rst';

echo "<pre>";
print_r($_SESSION);
echo "</pre>";

我正在使用此代码在其他页面上检索它:

session_start();
echo "<pre>";
print_r($_SESSION);
echo "</pre>";

正如我所说,它在其他 host 以及 localhost 上工作正常,所以这是服务器问题,但我需要保留用户的登录信息,因为我们用于通过会话维护登录记录。

我们已经在该网站上安装了 Joomla,它运行良好,可以维护所有登录信息和所有内容。

除了更换主机之外,谁能给我建议解决方案:) 谢谢。

已编辑: 由于某种原因,我无法显示主机名。 我使用的域是大学部门的子域,主站点是大学站点,我在子域的新文件夹下使用此代码。

【问题讨论】:

  • 究竟什么时候不工作?您能说明在这些情况下您使用的主机名吗?
  • 页面是否在同一主机上?在同一个域上?
  • 您的第二页是在不同的子域上吗?
  • Firefox Liveheaders;确定 cookie 的存在。启用错误报告。然后谷歌错误信息。
  • 我没有收到任何错误消息当我使用echo session_id('std_id')时我什至得到了会话ID

标签: php session-variables


【解决方案1】:

您的错误日志或 php 错误报告 (error_reporting) 中是否有任何错误? 喜欢"No session exists - writing to test_value"

您还可以测试当前会话目录是否可写:

$writeable = is_writable(ini_get("session.save_path"));

一个解决方案是change your session directory: (在你的根目录下创建 /tmp 目录by hand

ini_set("session.save_path","/tmp");

或您的 .htaccess

php_value session.save_path /tmp

并在该 /tmp 目录中授予0777 权限,该目录必须位于您的根目录中。

【讨论】:

  • 是的,会话目录不可写,你能告诉我我的子域中的 /tmp 目录在哪里吗?我使它可写,但该会话再次没有保存。
【解决方案2】:

正如我在您的代码中看到的,一切看起来都很好。您无需更改您的主机,只需联系您的主机提供商即可。我之前也遇到过类似的问题。如果您联系他们,他们将编辑您的 php.ini 文件以允许您开始会话。

注意:并非每个主机提供商都允许用户使用 PHP 的许多功能。你有它要求他们设置它。他们关闭这些功能以节省 CPU 使用率。

【讨论】:

  • 我还没有听说过关闭会话。
  • 就像我说的,我以前也遇到过类似的问题。不仅仅是会话,一些主机提供商关闭了 PHP 的许多功能以节省 CPU 使用率。特别是如果它是云托管。
  • 他们按照我的想法提供会话,因为当我 echo phpinfo(); 它显示会话在主机中打开。
猜你喜欢
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-26
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多