用COOKIE保存登录用户信息时,怎样保证COOKIE不被伪造 各位高手。请教大家一个问题,我想使用COOKIE保存用户登录,目的是可以在HTML页面使用(显示用户名和自动填入文本框),和能够在一段时间内免登录。请问一下。我怎样才能保证COOKIE不会被伪造呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Cookie是浏览器端的东西,所以绝对可以被伪造。存储一些重要信息应该是在服务器端,例如用session 那如果我用SESSION储存。怎样做到在一定时间内自动免登录和在HTML页面中传递呢? SESSION的作用正是你需要的这两点。仔细阅读以下教程,你就知道怎么用了http://www.w3school.com.cn/php/php_sessions.asphttp://www.php.net/manual/zh/ref.session.php 这样的话就得用Cookie了。我估摸着通常好像这么干: 用户初次登录后,在客户端保存cookie为期一周。内容包含有 username:用户名 key: md5(密码) 之后每次发起请求,若无SESSION信息,验证之。如果符合,则设置session(像普通的用户登录一样),可以设置过期时间,时间长了就可以删除。删除SESSION后再登录则重复以上动作。当然,我没做过。所以只能给你纸上谈兵 选择记住密码登录的时候$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; }} 第四行少了字符setcookie('user_id',$user_id,(time()+2592000),'/','',0); //设置超时为2个小时 $lifeTime = 2*3600; setcookie(session_name(),session_id(),time()+$lifeTime,"/"); 那一些需要记住密码的网站。都采取了哪些有效措施最大限度的防止COOKIE被伪造呢? Smarty error: unable to read resource的解决办法 关于一个表单传递数据插入数据库的简单问题 购物车的实现 高手请进! IE6 与 Utf-8 编码 mysql记录无法显示!!!! 关于正则表达式 如何用PHP将MySql中的数据导如Excle php实现文件上传的问题 刚刚接触PHP,"^http://[^/]*"这个表达式不明白 再问“怎样让delphi从自带的库里提出数据按日期字段排序?谢谢大哥!” 替换多个字符串 写了一个smarty插件,浏览器报错
存储一些重要信息应该是在服务器端,例如用session
仔细阅读以下教程,你就知道怎么用了
http://www.w3school.com.cn/php/php_sessions.asp
http://www.php.net/manual/zh/ref.session.php
我估摸着通常好像这么干:
用户初次登录后,在客户端保存cookie为期一周。内容包含有
username:用户名 key: md5(密码)
之后每次发起请求,若无SESSION信息,验证之。如果符合,则设置session(像普通的用户登录一样),可以设置过期时间,时间长了就可以删除。删除SESSION后再登录则重复以上动作。当然,我没做过。所以只能给你纸上谈兵
$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;
}
}
setcookie('user_id',$user_id,(time()+2592000),'/','',0);
//设置超时为2个小时
$lifeTime = 2*3600; setcookie(session_name(),session_id(),time()+$lifeTime,"/");