本帖最后由 threeperson 于 2011-11-17 09:23:25 编辑

解决方案 »

  1.   

    index.php 没有session_start()吧?
      

  2.   


    setcookie( "house_havelogin", "true", time( ) + 36000 );
                setcookie( "house_username", $row['house_username'], time( ) + 36000 );print_r($_COOKIE);
                 //header( "Location: index.php" );
                
               echo "<script language='javascript'>alert('登陆成功!');window.location.href='index.php';</script>";
      

  3.   

    上面的if先不要判断 直接 print_f($_COOKIE); 看下有什么结果 或用firecookie插件看下cookie有没有值
      

  4.   


    elseif($action == 'save'){
         $ip = real_ip();
         $username = trim($_POST['username']);
         $password = trim($_POST['password']);
         $time = strtotime($_POST['time']);
         $checkinfo = $login->checkUserLogin($username, $password);
    if($checkinfo == -1){
    $error = '用户名或密码错误';
    $tpl->assign('errormsg',$error);
    $tpl->display('login.html');
    }elseif($checkinfo == -2){
    $error = '用户名或密码错误';
    $tpl->assign('errormsg',$error);
    $tpl->display('login.html');
    }else{
         $sql = "update {$tablepre}member set lastlogintime = '$time',logincount = logincount+1,loginip = '$ip' where username = '$username'";
         $login->db->query($sql);
         $login_flag = $login->userLogin($username,$password);
         if($login_flag){
    if($login_flag > 0){
    if($info_all = $login->checkUserLogin($username, $password)){
    $controller = $info_all['controller'];
    // print_r($controller);
    $action = explode(',',$info_all['action']);
    $controller = explode(',',$info_all['controller']);
    }
    //-----登录成功在这里要进行登录初始化,检查用户信息是否正确---------
    loadModel(array('register'));
    $register = new register();
    //检查
    $register->initMemberDir($login_flag);

    //------------检查结束---------------------------------------
         $_SESSION['userinfo'] = array('uid'=>$login_flag,'uname'=>$username,'action'=>$info_all['action'],'controller'=>$info_all['controller']);
         setcookie('uname', $username, $cookie_expire, $cookie_path, $cookie_domain);
         setcookie('uid', $login_flag, $cookie_expire, $cookie_path, $cookie_domain);
    setcookie('cp_username', sys_authcode($username,'ENCODE',$cookie_key), $cookie_expire, $cookie_path, $cookie_domain);
    setcookie('cp_userid', sys_authcode($login_flag,'ENCODE',$cookie_key), $cookie_expire, $cookie_path, $cookie_domain);

    }else{
    header('location:my/index.php?s=2');
    }
    $gotourl = isset($_REQUEST['href']) && !empty($_REQUEST['href']) ? trim($_REQUEST['href']) : 'my/index.php';
    if($_POST['url']){//记录的来源页
    $sourceurl=$_POST['url'];
    //echo $sourceurl;
    header('location:my/index.php');
    //header('location:'.$sourceurl);
    exit;

    header('location:'.$gotourl);
        
    }else{
         header('location:login.php');
    exit;
         }
    }
     }
      

  5.   

    cookie设置好,直接在本页是取不到的。要到下一个页面获取,但我在下一个页面获取也是空的。
      

  6.   


    打印出来的结果是:
    Array ( [PHPSESSID] => 7eb541d8dd8c046fb5319cb3bc7e5093 [Hm_lpvt_89345eb73e423a9d939aeba436c2179f] => 1321427903421 [rtime] => 0 [ltime] => 1321427903046 [cnzz_eid] => 16545484-1321408684- [Hm_lvt_89345eb73e423a9d939aeba436c2179f] => 1321427903421 )
      

  7.   

    1 注释掉 header( "Location: index.php" ); 
    2 在header( "Location: index.php" );下面添加 print_r($row);确认是否有用户信息存在
    3 在index.php里面添加 echo $_COOKIE['house_username'] ;确认在COOKIE是否有数值php.ini 内需要设置
    output_buffering = on程序自身还存在问题,如果登录正常了,那么任何人随便写用户名密码都能登录
    建议在将查询的SQL加上用户名和密码2个字段进行查询