【问题标题】:PHP session seemingly not workingPHP会话似乎不起作用
【发布时间】:2010-10-04 04:14:12
【问题描述】:

会话变量显然不适合我。我不知道我做错了什么。这是我用来检查有效密码的代码:

if ($input_password_hash == $password_hash)
 {
  session_start();
  $_SESSION['is_user'] = 1;
  header("Location: ../new_look"); //or Location: index.php
 }
else echo "Wrong password.";

在 index.php 文件(重定向到的位置)中,我有以下代码:

if ($_SESSION['is_user'] == 1)
{
  //show index page with navigation bar for registered user
}

else
{
 //do something else
}

但它根本不起作用。

会话确实开始了,可以通过检查 cookie 来验证。

我做错了什么?

【问题讨论】:

  • 这可能很傻,但你确实有“session_start();”在 index.php 上,对吗?您的代码看起来应该可以工作。

标签: php session cookies session-variables


【解决方案1】:

您知道在任何请求中使用$_SESSION 变量之前必须编写session_start(),对吧?看起来你还没有把它放在 index.php 的任何地方。

【讨论】:

    【解决方案2】:

    Session_start();必须放在任何将要发送的标头之前,例如在 php 文件上的任何 HTML 标记之前。

    【讨论】:

      【解决方案3】:

      我刚从修复该问题回来...在文件顶部添加了session_start() - 甚至在<html> 标记之前。在中间执行session_start() 会出错...不知道为什么。我是新手。不过感谢您的及时回复。

      【讨论】:

      • session_start 必须在发送任何标头之前调用,这可能就是为什么当你放在中间时它会引发错误。
      • 只是对胡安的评论进行了小幅更正。 session_start 必须在响应正文发送之前调用(其他标头都可以)。
      • 其实不,胡安是对的。您甚至不能将 dtd 放在 session_start() 之前。我试过了。只放dtd,然后是session_start(),还是报错。
      • Jim 指的是 HTTP 标头,而不是 HTML 标头。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      相关资源
      最近更新 更多