注册成功自动登录有疑问,关于session_start();的问题
下面这部分是之前的做法(没在$_SESSION['user']=$result前直接加上session_start()),不能在注册成功后自动登录
if($obj)
{
echo "<script type='text/javascript'>
alert('注册成功');
</script>";
//注册成功自动登录
$sql = "SELECT * FROM `student_user` WHERE `name` = '{$name}'";
$obj = $mysqli->query($sql);
$result = $obj->fetch_all(MYSQLI_ASSOC);
$_SESSION['user'] = $result;//这里var_dump($_SESSION['user'])出来的也都是正常的
echo "<script type='text/javascript'>
window.location.href='index.php';//能够把新注册的用户成功显示在首页,数据也能成功插入到数据库中,但为什么页面跳转到index.php后,始终是未登录的状态,而且在index.php中var_dump($_SESSION['user'])也输出的是null
</script>";
exit;
}
else
{
echo "<script type='text/javascript'>
alert('注册失败');
</script>";
exit;
}
//下面是index.php页面的登录函数
function checkLogin(){
session_start();
if(!isset($_SESSION['user']) || empty($_SESSION['user']))
{
return false;
}
return true;
}
if($login = checkLogin())
{
$user = $_SESSION['user'];
var_dump($user);//这里输出null
2.下面是在$_SESSION['user']=$result前直接加上session_start(),然后注册成功后能够自动登录。我的问题是:不知道为什么第一种方法不能自动登录(在检查登陆的函数中有写session_start();)???第一种方法和入门搭建路径中的油画商城项目里面的登陆很相似(也是只在检查登陆的函数中写session_start();并没有像第二种方法直接在$_SESSION['user']=$result前加上session_start())
if($obj)
{
echo "<script type='text/javascript'>
alert('注册成功');
</script>";
//注册成功自动登录
$sql = "SELECT * FROM `student_user` WHERE `name` = '{$name}'";
$obj = $mysqli->query($sql);
$result = $obj->fetch_all(MYSQLI_ASSOC);
session_start();//?????这里有疑问,为什么非要先开启session_start();然后在index.php(有判断登陆的函数checkLogin())页面才能检测到登录的信息,如果不写则一直是未登录状态,但是??但是在上一个php路径课程油画商城项目中那个login.php中就没写session_start()而是在判断密码是否相同时直接写的$_SESSION['user'] = $result;然后跳转到index.php(有判断登陆的函数checkLogin())页面就能检测到登陆的信息
$_SESSION['user'] = $result;//之前要开启session即session_start();
echo "<script type='text/javascript'>
window.location.href='index.php';
</script>";
exit;
}
else
{
echo "<script type='text/javascript'>
alert('注册失败');
</script>";
exit;
}
正在回答 回答被采纳积分+1
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 225 份
- 解答问题 3372 个
掌握用PHP开发互联网网站的必备功能,掌握当下主流的Linux系统开发,并熟练使用热门框架ThinkPhp开发电商团购项目,是通向PHP工程师必经之路。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星