是这样的,我开发了一个网站,在我本机能正常登陆,一点事也没有,但我把网站上传到客户那里,就是登陆不上,账号密码都正确,如果账号,密码,验证码输入错误也能正常显示出错信息。当都正确的时候,就是不能跳转页面,$_session['admin'] 好像也写入失败,奇怪的是,验证码的session很正常(因为能显示验证码是否错误)
所以我怀疑是$_SESSION['admin']=$lgUser; 代码出错导致下面的跳转动作也不发生了,我的php是5.3 win32 那边是5.2 unix 平台。还有一个login.html 页面  开发模式是mvc+单点入口模式,admin.php 的开头就第二行就是session_start(),第一行用常理来判断是否非法打开。
我怀疑 $_SESSION['admin'] 这个admin关键词不能被使用?
admin.php页面
if(isset($_POST['lgUser'])&&isset($_POST['lgPswd'])){
    if($_SESSION['code']!=$_POST['lgCode']){
    echo '<script language="javascript">warn("验证码错误!")</script>';
    return false;
}
$lgUser=$_POST['lgUser'];
$lgPswd=md5($_POST['lgPswd']);
if($db->get_num('select `id` from ```admin``` where `username`="'.$lgUser.'" and `password`="'.$lgPswd.'"')){
    $_SESSION['admin']=$lgUser;
    setcookie('admin',$lgUser,time()+3600*24*7);
    header('Location:index.php?module=admin&mod=setting');
}else{
    echo '<script language="javascript">warn("账号或密码错误!")</script>';
   }
}
请各位帮我解决下这个问题!

解决方案 »

  1.   

    如果
    第一行用常理来判断是否非法打开
    第二行就是session_start()
    那么数据库对象 $db 在哪里实例化的?
      

  2.   

    根据你提供的代码,先排查一下SQL语句~
    $sql = 'select `id` from ```admin``` where `username`="'.$lgUser.'" and `password`="'.$lgPswd.'"';
    echo $sql;
    exit();
    看SQL语句在数据库中执行是否正常~
      

  3.   

    或者像唠叨说的,先检查一下你的Session是否正常~
      

  4.   

    因为本地环境与服务器上的环境不同,这点现象可以理解
    1.$_SESSION['admin']这个关键字是可以使用的,我就在使用.
    2.你的session_start();是从哪里开始的
    3.$db->get_num这个类属性是否做到了它的工作
    建议一关一关的排除,用die来做,把错误代码贴出来.
      

  5.   

    session_start();
    必须写在第一行。
      

  6.   

    我怀疑 $_SESSION['admin'] 这个admin关键词不能被使用?
    那你直接打印$_SESSION看看
      

  7.   

    检查session_start()之前,是否已向浏览器输出过内容