会话变量不粘

时间:2011-06-30 04:54:30

标签: php session login

我很抱歉 - 经过两个小时的查看和评论等等,我找到了一个引用重定向域的小包含。不知怎的,这让其他一切都失去了。我仍然不确定为什么,但通过将该文件修复到新域我能够修复它。再次感谢您的帮助和时间回复我!

我对PHP中的会话非常熟悉,但我不知道为什么这些会话变量不会粘在我拥有的这个登录系统上。当我登录时,我成功发送到索引页面,但其中的任何页面都被踢回登录页面,并且当我重新加载索引页面时。我已经在索引页面上回显了会话变量$ _SESSION ['login']以确保其值已被准确地结转,并且它的那里..

...代码已删除

4 个答案:

答案 0 :(得分:1)

我疯狂的猜测,但通常是我在Linux下遇到会话时遇到的问题。

检查php.ini中的session.save_path。如果您的系统中存在路径并且在您的系统中不存在,请创建它,例如session.save_path = "/var/lib/php/session"。我猜测PHP无法创建会话文件,因此会话不会持续跨页面。给文件夹一个写权限,试试0777(但它不是最好的权限,因为它允许所有用户)。 HTH!

答案 1 :(得分:0)

为什么在登录期间破坏会话?这可能是一个原因。

session_start();
session_unregister('login');
session_write_close();
session_start();
session_destroy();

您可能只需调用session_start()并清除'login'会话值:

<?
$ERRBG="";
$ERRMSG="";
session_start();
$_SESSION['login'] = null;
require_once("db/mysql_connect.php");
.......

答案 2 :(得分:0)

在起始

的php页面中只使用一次session_start()

不要使用session_destroy()。 如果要删除会话变量,请使用unset函数。 如果要删除所有变量,请使用session_unset函数

使用session_destroy()作为注销操作

答案 3 :(得分:0)

请执行以下步骤:

  1. <?php之后的页面顶部使用session_start()一次。
  2. 不要破坏会话
  3. 在test-index中写入var_dump($ _ SESSION)并将其写入 点击它的页面,它是 重定向到登录页面(插入 die()之后)!
  4. 我认为会话在你的测试索引中开始,但在你的其他页面中没有

    向我报告结果!