各位高手。请教大家一个问题,我想使用COOKIE保存用户登录,目的是可以在HTML页面使用(显示用户名和自动填入文本框),和能够在一段时间内免登录。
请问一下。我怎样才能保证COOKIE不会被伪造呢?

解决方案 »

  1.   

    Cookie是浏览器端的东西,所以绝对可以被伪造。
    存储一些重要信息应该是在服务器端,例如用session
      

  2.   

    那如果我用SESSION储存。怎样做到在一定时间内自动免登录和在HTML页面中传递呢?
      

  3.   

    SESSION的作用正是你需要的这两点。
    仔细阅读以下教程,你就知道怎么用了
    http://www.w3school.com.cn/php/php_sessions.asp
    http://www.php.net/manual/zh/ref.session.php
      

  4.   

    这样的话就得用Cookie了。
    我估摸着通常好像这么干:
      用户初次登录后,在客户端保存cookie为期一周。内容包含有
       username:用户名   key: md5(密码)
      之后每次发起请求,若无SESSION信息,验证之。如果符合,则设置session(像普通的用户登录一样),可以设置过期时间,时间长了就可以删除。删除SESSION后再登录则重复以上动作。当然,我没做过。所以只能给你纸上谈兵
      

  5.   

    选择记住密码登录的时候
    $spuerpass="20120412001@#" //自己更改,用户无法获得
    $user_id=$rows_arr['user_id'];
    $rand=md5(md5($user_id.$spuerpass));
    setcookie('user_,$user_id,(time()+2592000),'/','',0);
    setcookie('rand',$rand,(time()+2592000),'/','',0);
    $_SESSION['user_id']=$user_id;
    下次打开页面检测是否有记住密码登录
    if(isset($_COOKIE['user_id'])&&isset($_COOKIE['rand']))
    {
          $user_id=$_COOKIE['user_id'];
          $spuerpass="20120412001@#";
          $rand=md5(md5($user_id.$spuerpass));
          if($_COOKIE['rand']==$rand)
          {
              $_SESSION['user_id']=$user_id;
          }
    }
      

  6.   

    第四行少了字符
    setcookie('user_id',$user_id,(time()+2592000),'/','',0);
      

  7.   


    //设置超时为2个小时
    $lifeTime = 2*3600; setcookie(session_name(),session_id(),time()+$lifeTime,"/");
      

  8.   

    那一些需要记住密码的网站。都采取了哪些有效措施最大限度的防止COOKIE被伪造呢?