PHP会话通知:未定义的索引

时间:2016-11-16 05:42:59

标签: php session

我正在尝试使用会话从一个页面传递给另一个页面但是它说

  

注意:未定义的索引:第61行的path \ file.php中的user_id

我正在创建会话的文件如下

 // checking for session, if not then start session
 if(!isset($_SESSION)) { 
        session_start(); 
 }
// assigning user_id to session var 
 $_session['user_id']=$row['user_id'];

这是我正在访问会话var:

的代码
if(!isset($_SESSION)) { 
        session_start(); 
}
// trying to access session var (previously defined) 
$user_id=$_session['user_id'];

我犯错的地方。请指导我

注意:那些认为这可能是重复问题的人。我的答案是,它可能是但没有一个解决了我的问题。由于我的全球变量和休息的情况敏感,其他人不是这个问题。

4 个答案:

答案 0 :(得分:3)

应该是$ _SESSION而不是$ _session。

 $_SESSION['user_id']=$row['user_id'];

 $user_id = $_SESSION['user_id'];

$_SESSION是一个全局变量,应该用大写字母书写。当您使用带有小写字母的变量时,在这种情况下它不会获取变量,因为它从未被定义并且没有键user_id因此您得到错误。希望这会有所帮助。

答案 1 :(得分:2)

错误是模糊的,user_id未定义的索引可能是$_SESSION$row的一部分,您可以使用var_dump()进行一些调试来检查哪个是哪个。以下是会议的一些提示。

会话常见的错误是忘记包含 session_start() 在每个文件的顶部,不需要检查是否设置了$ _SESSION。无论如何都要开始吧!

此外,为了避免此错误,您应该检查以确保索引user_id存在。类似的东西:

if ( isset( $_SESSION['user_id'] ) )

确保对SESSION $_SESSION使用大写字母,不确定它是否有所不同,但它是服务器变量的常用标准。

答案 2 :(得分:2)

$_SESSION['user_id'] = $row['user_id'];

和接收方

$user_id = $_SESSION['user_id'];

答案 3 :(得分:2)

  

使用SESSION要求Session在所有需要访问会话数据的脚本上处于活动状态。这意味着,您应该在所有需要访问任何会话数据的脚本的顶部执行类似的操作:

<?php   // NOTICE THERE IS NO SPACE BEFORE <?php
    // FIRST CHECK IF SESSION EXIST BEFORE STARTING IT.
    // DO THIS AT THE VERY TOP OF EACH SCRIPT THAT NEEDS ACCESS TO $_SESSION DATA
    if (session_status() == PHP_SESSION_NONE  || session_id() == '') {
        session_start();
    } 

然后您可以像这样使用Session:

<?php
    if (session_status() == PHP_SESSION_NONE  || session_id() == '') {
        session_start();
    } 

    // SOME-CODE...

    $_SESSION['user_id'] = $row['user_id'];

    // SOME-CODE...

然后再说;您可以像这样获得会话数据:

<?php
    if (session_status() == PHP_SESSION_NONE  || session_id() == '') {
        session_start();
    } 

    // SOME-CODE...

    $user_id = $_SESSION['user_id'];

    // SOME-CODE...