PHP session跨页面传递问题,求详细解答!
问题:我将session用session_set_save_handler('_session_open','_session_close','_session_read...
问题:
我将session用session_set_save_handler('_session_open','_session_close','_session_read','_session_write','_session_destroy','_session_gc')函数存入到数据库中,然后通过login.php表单登录时验证用户名和密码是否正确,如果正确,就将用户名和密码赋值给$_SESSION,然后在这个login.php页面跳转到index.php页面。 index.php页面里有判断$_SESSION是否为空以及$_SESSION['user']是否为admin的判断语句。
现在出现的问题是:虽然login.php和index.php已经写了session_start()函数,但跳转到index.php后$_SESSION为空,值没有传递过来。这个问题该怎么处理? 处理这个问题的想法过程是怎么样的?
代码如下:
include('session.php'); /*session.php是session_set_save_handler('_session_open','_session_close','_session_read','_session_write','_session_destroy','_session_gc') ; session_start();*/
login_ok.php //处理登录表单并开始session
<?php include('session.php');?>
<?php
$user=trim($_POST['user']);
$pwd=trim(md5($_POST['pwd']));
$conn=mysqli_connect("localhost","root","","test")or die('数据库连接失败');
$sql="select * from person where user='$user'";
$result=mysqli_query($conn,$sql);
$row=mysqli_fetch_array($result);
if(!$user==$row['user'])
{
echo "<script>alert('用户不存在,请检查后重新输入');history.back();</script>";
}
else if($pwd==$row['pwd'])
{
$_SESSION['user']=$user;
$_SESSION['pwd']=$pwd;
//var_dump($_SESSION['pwd']);
echo '<script>alert("登陆成功");window.location.href="index.php";</script>';
}
else
{
echo "<script>alert('密码错误,请检查后重新输入');history.back();</script>";
}
?>
index.php //主页
<?php
session_start();
//这里判断session是否为空,如果为空则跳转到登录
if($_SESSION['user']=="")
{
echo "<script>alert('请登录,否则不能正常使用!');window.location.href='login.php';</script>";
}
?>
<ul>
<li><a href='index.php'>首页</a></li>
<li><a href='#'>我的日记</a></li>
<li><a href='#'>我的相册</a></li>
<li><a href='#'>留言板</a></li>
<li><a href='#'>访客记录</a></li>
<li><a href='#'>关于我</a></li>
<?php
//这里判断session是管理员还是普通用户
if($_SESSION['user']=="admin")
{
echo "<li><a href='#'>日记管理</a></li>";
echo "<li><a href='#'>相册管理</a></li>";
echo "<li><a href='#'>删除留言</a></li>";
}
?>
<li><a href='logout.php'>注销</a></li>
</ul> 展开
我将session用session_set_save_handler('_session_open','_session_close','_session_read','_session_write','_session_destroy','_session_gc')函数存入到数据库中,然后通过login.php表单登录时验证用户名和密码是否正确,如果正确,就将用户名和密码赋值给$_SESSION,然后在这个login.php页面跳转到index.php页面。 index.php页面里有判断$_SESSION是否为空以及$_SESSION['user']是否为admin的判断语句。
现在出现的问题是:虽然login.php和index.php已经写了session_start()函数,但跳转到index.php后$_SESSION为空,值没有传递过来。这个问题该怎么处理? 处理这个问题的想法过程是怎么样的?
代码如下:
include('session.php'); /*session.php是session_set_save_handler('_session_open','_session_close','_session_read','_session_write','_session_destroy','_session_gc') ; session_start();*/
login_ok.php //处理登录表单并开始session
<?php include('session.php');?>
<?php
$user=trim($_POST['user']);
$pwd=trim(md5($_POST['pwd']));
$conn=mysqli_connect("localhost","root","","test")or die('数据库连接失败');
$sql="select * from person where user='$user'";
$result=mysqli_query($conn,$sql);
$row=mysqli_fetch_array($result);
if(!$user==$row['user'])
{
echo "<script>alert('用户不存在,请检查后重新输入');history.back();</script>";
}
else if($pwd==$row['pwd'])
{
$_SESSION['user']=$user;
$_SESSION['pwd']=$pwd;
//var_dump($_SESSION['pwd']);
echo '<script>alert("登陆成功");window.location.href="index.php";</script>';
}
else
{
echo "<script>alert('密码错误,请检查后重新输入');history.back();</script>";
}
?>
index.php //主页
<?php
session_start();
//这里判断session是否为空,如果为空则跳转到登录
if($_SESSION['user']=="")
{
echo "<script>alert('请登录,否则不能正常使用!');window.location.href='login.php';</script>";
}
?>
<ul>
<li><a href='index.php'>首页</a></li>
<li><a href='#'>我的日记</a></li>
<li><a href='#'>我的相册</a></li>
<li><a href='#'>留言板</a></li>
<li><a href='#'>访客记录</a></li>
<li><a href='#'>关于我</a></li>
<?php
//这里判断session是管理员还是普通用户
if($_SESSION['user']=="admin")
{
echo "<li><a href='#'>日记管理</a></li>";
echo "<li><a href='#'>相册管理</a></li>";
echo "<li><a href='#'>删除留言</a></li>";
}
?>
<li><a href='logout.php'>注销</a></li>
</ul> 展开
1个回答
展开全部
[1].在1.php中将要传的值注册成为session 或者cookie,然后在2.php中获取;具体实现:1.php中代码: session_start();$_SESSION['head'] = $head;2.php中代码: session_start();$head = $_SESSION['head']; [2].在1.php中以get或者post的表单传值方式传递;1.php中代码:<form action="2.php" method="post"> <input type="hidden" name="head" value="<?php echo $head;?>"> <input type="submit" value="提交"></form> 2.php中代码:$head = $_POST['head'];
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询