我的也是PHP5.0.1和Mysql 5.0.1,session正常啊,一定是代码的问题,贴出来看看,拿唠叨大哥的话就是“不要让别人猜”

解决方案 »

  1.   

    没有什么代码,很简单的
    表单登录页面login.htm不用说了
    验证页面logincheck.php内容为:
    @session_start();
    extract($_POST);
    $loginrs=@mysql_query("select * from admin_user where admin_name='".$username."' and admin_pass='".$password."'");
    $loginflag=@mysql_num_rows($loginrs);
    if($loginflag<1)
     {
       session_register("loginflag");
       echo "用户或密码错误!";
     }else{
     session_register("loginflag");
     //echo $loginflag;//经过调试这里能正确输出session的值
     header("Location:main.php");
    }main.php里面开头的内容为:
    @session_start();
    extract($_SESSION);
    if(empty($loginflag)||$loginflag<1)
      echo "你还没有登录!";
    else
    {
    //登录成功后的内容
    }调试时,在用户密码都正确的情况下,结果始终提示:你还没有登录
      

  2.   

    原来我用php5+mysql4就能正确运行,后来重装了操作系统,数据库换成了mysql5.0,同样的程序却不行了
      

  3.   

    “不要让别人猜”这句话好像是我先说的吧嘿嘿,开个玩笑你的session_start前面为什么加个@呢???那一句有错误吗?
      

  4.   

    不碍事 ?没事最好不要加@那个loginrs,longflag之类的干吗都加上@而又全无错误处理机制????PHP4.2.0以后,就应该用$_SESSION["loginflag"] = $loginflag;来注册session变量了,而不是用session_register.而且在第二页中,应该打印一下数组$_SESSION,看看有无内容。//echo $loginflag; 
    这一句就叫调试吗???真晕~~
      

  5.   

    我的登录页面是查询用户提交的名称和密码,然后在数据库中查找,查找不到,错误(不写session),查找到,将用户名、用户组、密码写入session,密码用Mcrypt加密(64位不公开密钥算法),登录后所有页面包含有一个判断用户名和密码的PHP函数,保证用户名和密码的正确性,不论密码错还是用户名错,都自动退出,防止非法用户绕开session验证
    $USERGROUP = $group;
    $USERNAME = $loginname;
    $PASSWORD = $row['passwd'];$_SESSION['USERGROUP'] =$group;
    $_SESSION['USERNAME'] = $loginname;
    $_SESSION['PASSWORD'] = $rows['passwd'];这段代码就是将用户组、用户名、密码写入session验证的时候用session_is_registered判断