PHP中SESSION与COOKIE区别与联系

存储于浏览器端,由浏览器每次向服务器发出请求时,放在 http 协议的头部,发给服务器。服务器设置 cookie ,本质是发送请求和参数给浏览器,最终还是由浏览器存盘。服务器设置 cookie 后,并不会马上生效,必须等到下次 客户端向服务器发出请求时,将 cookie 发给服务器!

对于 php ,设置 cookie 主要使用函数 setcookie(name, value, expire, path, domain);

  • name:作为键(必选)

  • value: 作为值(必选)

  • expire:过期时间,可以使用 time() 函数获取当前时间,在此基础上增加或者减少,单位:S

  • path:设置为 "/":所有页面有效,所有客户端发给服务器的请求,全部包含该 cookie

    设置为 null :当前页面有效,只有当前页面请求服务器时,浏览器才会发送 cookie

<?php
    setcookie("login", "root", time() + 1 * 60 * 60, "/");  
?>

表示设置一个键为 login ,值为 root ,在一个小时后过期,在所有页面都要发送该 cookie

对于 phpcookie 存储于全局数组 _COOKIE 中,使用 $_COOKIE['name'] 既可获取 cookie 的值,使用 isset($_COOKIE['name']) 判断 cookie 是否存在!

<?php
    if (isset($_COOKIE['login']))
    {
        echo "login = " . $_COOKIE['login'];
    }
?>

session

session 存储于服务器中的全局数组 _SESSION 中,使用 session 之前,务必调用 session_start() 函数!

设置 session

<?php
    session_start();
    $_SESSION['login'] = 'root';
?>

获取 session

<?php
    session_start();
    if (isset($_SESSION['login']))
    {
        echo "login: " . $_SESSION['login'];
    }
?>

对于 cookiesession 的使用,务必掌握一点,使用不同浏览器访问服务器,$_SESSION$_COOKIE 全局数组不是共享的,这样的设计是合理的,假如某一个用户 root 登录后,服务器设置 :

<?php
    session_start();
    $_SESSION['login'] = 'root';
?>

以后网站中每个网页都会判断:

<?php
    session_start();
    if (!isset($_SESSION['login']))
    {
        ;//执行登录处理
    }
?>

假如 $_SESSION 是共享的,只要有一个用户登录过,另一个用户使用另一个浏览器,不经过登录直接使用 url 便可以访问我们的网站内容,因为 $_SESSION 中我们已经设置过数值,这样是很不合理的,也是不安全的!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值