未定义的索引:user_id。其中,user_id是会话变量

时间:2016-03-20 07:18:28

标签: php session session-variables

我正在尝试注册用户。注册用户后直接登录。所以基本上我想在立即注册后开始会话。

但我无法做到这一点,因为会话变量没有设置!这让我很头疼:(

请帮助我..

这里插入用户表的代码:

// Add register user 
if(isset($_POST["register_btn"]))
 {
    extract(array_map("test_input", $_POST));
    $md5pass=md5($password);

    $m->set_data('full_name',$full_name);
    $m->set_data('gender',$gender);
    $m->set_data('email',$email); 
    $m->set_data('mobile',$mobile);
    $m->set_data('password',$md5pass);
    $m->set_data('created_date',$date);
    $m->set_data('updated_date',$date);

    $a1= array ('role_id'=> 2,
                'full_name'=> $m->get_data('full_name'),
                'gender'=> $m->get_data('gender'),
                'email'=> $m->get_data('email'),
                'mobile'=> $m->get_data('mobile'),
                'password'=> $m->get_data('password'),
                'created_date' => $m->get_data('created_date'),
                'updated_date' => $m->get_data('updated_date'));

    $last_auto_id=$d->last_auto_id("users");
    $res=mysqli_fetch_array($last_auto_id);
    $user_id=$res['Auto_increment'];

    // inserting into users table
    $insert=$d->insert('users',$a1);

    if($insert>0)
    {
        // I am starting session here
        $_SESSION['user_id']=$user_id;
        header("location:account.php?msg=Your account has been created.");
    }
    else {
        header("location:account.php?msg=Error.");
    }
 }

现在,如果我尝试在下面的代码中打印$ _SESSION [' user_id']:

<?php
    extract(array_map("test_input", $_GET));
    if(isset($msg)) {
        echo $msg . "<br/>";
        echo "Welcome, ".$_SESSION['user_id'] ;
    }
?>

它给了我输出:

  

您的帐户已创建。

     

注意:未定义的索引:user_id in   第30行的C:\ xampp \ htdocs \ maxosale_client \ account.php欢迎光临,

我在标题中写了session_start()并包含在上面的代码中,这样就没有了问题。

所以我的问题请帮助我。

4 个答案:

答案 0 :(得分:0)

通知后,你能看到$_SESSION['user_id']价值吗?如果是这样,试试这个:

extract(array_map("test_input", $_GET));
if(isset($msg)) {
    echo $msg . "<br/>";
    $user_id = isset($_SESSION['user_id']) ? trim($_SESSION['user_id']) : '';
    echo "Welcome, " . $user_id ;
}

如果您在该通知后无法看到$_SESSION['user_id']值,那么会话处理会出现问题。您会根据代码或php.ini文件设置中的php error_reporting设置看到通知/警告/错误。

答案 1 :(得分:0)

我理解这个问题。我没有在我将数据插入用户表的页面中开始我的会话。

现在我把session_start();

它运行得很好。

这里代码:

session_start();
// Add register user 
if(isset($_POST["register_btn"]))
{
extract(array_map("test_input", $_POST));
$md5pass=md5($password);

$m->set_data('full_name',$full_name);
$m->set_data('gender',$gender);
$m->set_data('email',$email); 
$m->set_data('mobile',$mobile);
$m->set_data('password',$md5pass);
$m->set_data('created_date',$date);
$m->set_data('updated_date',$date);

$a1= array ('role_id'=> 2,
            'full_name'=> $m->get_data('full_name'),
            'gender'=> $m->get_data('gender'),
            'email'=> $m->get_data('email'),
            'mobile'=> $m->get_data('mobile'),
            'password'=> $m->get_data('password'),
            'created_date' => $m->get_data('created_date'),
            'updated_date' => $m->get_data('updated_date'));

$last_auto_id=$d->last_auto_id("users");
$res=mysqli_fetch_array($last_auto_id);
$user_id=$res['Auto_increment'];

// inserting into users table
$insert=$d->insert('users',$a1);

if($insert>0)
{
    // I am starting session here
    $_SESSION['user_id']=$user_id;
    header("location:account.php?msg=Your account has been created.");
}
else {
    header("location:account.php?msg=Error.");
}
}

答案 2 :(得分:0)

如果某种技巧无效,则可以添加     if conditionA=1 and conditionB=1 levelAB=1. if conditionA=2 and conditionB=1 levelAB=2. if conditionA=1 and conditionB=2 levelAB=3. if conditionA=2 and conditionB=2 levelAB=4. 在初始化会话变量之前,您将摆脱它。

答案 3 :(得分:-1)

在使用任何$ _SESSION变量之前,您应该使用session_start()。

<?php
    session_start();

    extract(array_map("test_input", $_GET));
    if(isset($msg)) {
        echo $msg . "<br/>";
        echo "Welcome, ".$_SESSION['user_id'] ;
    }
?>