我正在尝试注册用户。注册用户后直接登录。所以基本上我想在立即注册后开始会话。
但我无法做到这一点,因为会话变量没有设置!这让我很头疼:(
请帮助我..
这里插入用户表的代码:
// 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()并包含在上面的代码中,这样就没有了问题。
所以我的问题请帮助我。
答案 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'] ;
}
?>