【问题标题】:PHP : session variable having an undefined offset errorPHP:会话变量具有未定义的偏移错误
【发布时间】:2018-02-16 22:36:03
【问题描述】:

我是 PHP 编程的新手。我正在创建一个带有会话的简单登录表单。我正在传递两个会话变量:$_SESSION['username'] 和 $_SESSION['logon']。这是我的代码:

    $rowcount = mysqli_num_rows($result);

    if($rowcount == 1){
        session_start();
        $_SESSION['logon'] == "online";
        $_SESSION['username'] = $username;
        header("location:../index.php?username=$_SESSION[username]");

    }

问题是当我尝试访问$_SESSION['username']variable 时,它​​给了我存储在其中的适当值,但是当我尝试访问$_SESSION['logon'] 变量时,它给了我一个未定义的偏移错误。

【问题讨论】:

  • '== ' 这是比较,你应该分配 '=' 而另一件事 session_start(); should be the first line
  • session_start();仅在页面顶部

标签: php session


【解决方案1】:

两件事:-

1.session_start(); 需要在每个页面的顶部(最好添加到单独的文件中,然后将该文件包含到其他每个文件中)

2.

$_SESSION['logon'] == "online"; //it's comparison not assignment

必须是:-

$_SESSION['logon'] = "online"; // now it's an assignment

注意:- 当您在页面中间使用session_start() 时,您可以获得多次Warning: Cannot modify header information - headers ...。

参考:-

1.Why setcookie( ) and session_start( ) Want to Be at the Top of the Page

2.Where exactly do I put a SESSION_START?

3.When do I have to declare session_start();?

【讨论】:

  • 但是在我验证他是我数据库中的用户之后我不应该开始会话吗?
  • @IrfanSindhi 在页面中间开始会话会导致问题,稍后你会明白的。
  • 你能详细说明一下吗?我有点困惑。
  • @IrfanSindhi 检查我的答案中的参考链接
  • 感谢您的额外回答。这真的很有帮助。
【解决方案2】:
$_SESSION['logon'] == "online";

和

不一样
$_SESSION['logon'] = "online";

第一个是比较。

【讨论】:

  • 感谢您指出这一点。我的代码现在可以工作了。谢谢。
猜你喜欢
  • 2011-10-27
  • 2011-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多