011-如何让用户无法篡改cookie?

<?php
/**
 * 如何让用户无法篡改cookie?
 * 提示:
 *      md5+salt应用于项目
 */

# ==  lib/config.php ================================================================================
return array(
    'host'=>'localhost',
    'user'=>'root',
    'password'=>'',
    'db'=>'blog',
    'charset'=>'utf8',
    'salt'=>'Lsd":Adfqef]',
);


# ==  func函数封装 ================================================================================
/**
 * md5加密用户名和盐
 * @param $name     用户名
 * @return string   加密后的用户名+盐
 */
function ccode($name){
    $cfg = include (ROOT.'./lib/config.php');
    $salt = $cfg['salt'];
    return md5($salt . '|' . $name);
}

/**
 * 检测用户是否登录(通过ccode防止用户伪造cookie)
 * @return bool
 */
function acc(){
    //如果两个cookie有一个不存在,则返回false
    if( !isset($_COOKIE['name']) || !isset($_COOKIE['ccode'])){
        return false;
    }
    return $_COOKIE['ccode'] === ccode($_COOKIE['name']);
}


# ==  login.php ================================================================================
setcookie('name', $user['name']);
setcookie('ccode', ccode($user['name']));
header('Location: artlist.php');

# ==  总结 ================================================================================

为什么不用session来加密?

session_id是随机生成的,别人很难伪造;session感觉上很省事;

但是用session的效率不如用cookie的高;

因为session放在服务器端,像大型的网站,每天的访问量成千上万上亿,一个目录下放置那那么多的session文件,再查询,会拖累服务器的效率;

cookie,它是由浏览器存储的,上亿个客户,上亿台浏览器,负担交给了浏览器,访问的时候带过来,带过来之后算一下就可以了




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值