先简单说一下,check.php是验证你的与户名和密码的。checkuser.php是验证是否登陆的。
check.php的代码。<?php 
session_start();
include_once('../include/public.inc.php');

if($_SESSION['admin']==''){
$name=$_POST['name'];
$passowrd=$_POST['psw'];

if ($name && $passowrd){
$sql = "select * from admin where name = '$name' and psw='$passowrd' limit 1";
$query = mysql_query($sql);
$result = mysql_fetch_array($query);
if($result){
$_SESSION['admin'] = $name;
header("Location: index.php");
exit;
}else{
echo "<script language=javascript>alert('用户名密码错误');window.location.href='login.php';</script>";
}
}else {
echo "<script language=javascript>alert('用户名密码不能为空');window.location.href='login.php';</script>";
}
}
?>checkuser.php的代码<?
session_start();
if($_SESSION['admin']==''){
        echo "<script language=javascript>alert('请先登录方可访问本网站');window.location.href='login.php';</script>";    
}
?>check.php中的“$_SESSION['admin'] = $name;”我不太理解是什么意思,本来没写这句话,结果一运行到checkuser.php就出弹窗了,也就是说$_SESSION['admin']==''了。所以我才加上了$_SESSION['admin'] = $name;。
语法上倒是好解释,没有给$_SESSION['admin']赋值(貌似不该用赋值这个词眼)。但是我总感觉既然我登陆并且session_start();了,那么$_SESSION['admin']应该就不为空了啊?SESSION不太好,头次用,见笑了,欢迎拍砖!!!

解决方案 »

  1.   

    页面包含结构是什么样的,访问个流程应该是login.php、index.php、check.php、checkuser.php这几个文件
      

  2.   

    $_SESSION['admin'] = $name;设置一个全局变量,来记下用户的状态的。建议看看相关的书,这里面有好多知识,后才能真正理解。
      

  3.   

    1.问题要一步步分析,跨几个页面的就要追踪每个阶段变量的值2.你的一些写法不严谨,虽然你提出的错误不像是从这里来,但总会在其他时候碰钉子
    if($_SESSION['admin']=='') 应该用empty和isset
    if ($name && $passowrd) 这个?判断什么呢?
    $sql = "select * from admin where name = '$name' and psw='$passowrd' limit 1";
    这个不用防注入么?直接就用post过来的东西?3.如果最初$_SESSION['admin']不存在的话if($_SESSION['admin']==''){……} 这段代码是不运行的(不存在就不为空);这个应该是问题的所在