• cookiesession


    //以下文字摘自慕课网教程.....

    设置cookie

    PHP设置Cookie最常用的方法就是使用setcookie函数,setcookie具有7个可选参数,我们常用到的为前5个:

    name( Cookie名)可以通过$_COOKIE['name'] 进行访问
    value(Cookie的值)
    expire(过期时间)Unix时间戳格式,默认为0,表示浏览器关闭即失效
    path(有效路径)如果路径设置为'/',则整个网站都有效
    domain(有效域)默认整个域名都有效,如果设置了'www.imooc.com',则只在www子域中有效

    $value = 'test';
    setcookie("TestCookie", $value);
    setcookie("TestCookie", $value, time()+3600);  //有效期一小时
    setcookie("TestCookie", $value, time()+3600, "/path/", "imooc.com"); //设置路径与域

    cookie的删除与过期时间

    在PHP中删除cookie也是采用setcookie函数来实现。

    setcookie('test', '', time()-1); 

    可以看到将cookie的过期时间设置到当前时间之前,则该cookie会自动失效,也就达到了删除cookie的目的。

    cookie的有效路径

    cookie中的路径用来控制设置的cookie在哪个路径下有效,默认为'/',在所有路径下都有,当设定了其他路径之后,则只在设定的路径以及子路径下有效,例如:

    setcookie('test', time(), 0, '/path');

    session与cookie的异同

    cookie将数据存储在客户端,建立起用户与服务器之间的联系,通常可以解决很多问题,但是cookie仍然具有一些局限:

    cookie相对不是太安全,容易被盗用导致cookie欺骗
    单个cookie的值最大只能存储4k
    每次请求都要进行网络传输,占用带宽

    session是将用户的会话数据存储在服务端,没有大小限制,通过一个session_id进行用户识别,PHP默认情况下session id是通过cookie来保存的,因此从某种程度上来说,seesion依赖于cookie。但这不是绝对的,session id也可以通过参数来实现,只要能将session id传递到服务端进行识别的机制都可以使用session。

    使用session

    在PHP中使用session非常简单,先执行session_start方法开启session,然后通过全局变量$_SESSION进行session的读写。

    session会自动的对要设置的值进行encode与decode,因此session可以支持任意数据类型,包括数据与对象等

    session_start();
    $_SESSION['ary'] = array('name' => 'jobs');
    $_SESSION['obj'] = new stdClass();
    var_dump($_SESSION);
    默认情况下,session是以文件形式存储在服务器上的,因此当一个页面开启了session之后,会独占这个session文件,这样会导致当前用户的其他并发访问无法执行而等待。可以采用缓存或者数据库的形式存储来解决这个问题,这个我们会在一些高级的课程中讲到

    删除与销毁session

    删除某个session值可以使用PHP的unset函数,删除后就会从全局变量$_SESSION中去除,无法访问

    session_start();
    $_SESSION['name'] = 'jobs';
    unset($_SESSION['name']);
    echo $_SESSION['name']; //提示name不存在

    如果要删除所有的session,可以使用session_destroy函数销毁当前session,session_destroy会删除所有数据,但是session_id仍然存在。
    session_start();
    $_SESSION['name'] = 'jobs';
    $_SESSION['time'] = time();
    session_destroy();
    值得注意的是,session_destroy并不会立即的销毁全局变量$_SESSION中的值,只有当下次再访问的时候,$_SESSION才为空,因此如果需要立即销毁$_SESSION,可以使用unset函数。
    session_start();
    $_SESSION['name'] = 'jobs';
    $_SESSION['time'] = time();
    unset($_SESSION);
    session_destroy(); 
    var_dump($_SESSION); //此时已为空
    如果需要同时销毁cookie中的session_id,通常在用户退出的时候可能会用到,则还需要显式的调用setcookie方法删除session_id的cookie值。

    使用session来存储用户的登录信息

    session可以用来存储多种类型的数据,因此具有很多的用途,常用来存储用户的登录信息,购物车数据,或者一些临时使用的暂存数据等。

    用户在登录成功以后,通常可以将用户的信息存储在session中,一般的会单独的将一些重要的字段单独存储,然后所有的用户信息独立存储

    $_SESSION['uid'] = $userinfo['uid'];
    $_SESSION['userinfo'] = $userinfo;
    一般来说,登录信息既可以存储在sessioin中,也可以存储在cookie中,他们之间的差别在于session可以方便的存取多种数据类型,而cookie只支持字符串类型,同时对于一些安全性比较高的数据,
    cookie需要进行格式化与加密存储,而session存储在服务端则安全性较高。
    sessionid()方法可以获取当前网站sessionid,可以通过传递该值,使用户在其他地方也能获取存储服务器端数据

  • 相关阅读:
    纯CSS星级评价
    Enterprise Library启用签名后发生 PublicKeyToken错误,HRESULT:0x80131040解决
    SQL Server
    该如何选择国外VPS
    网站的伪静态化
    kernel FIELD_SIZEOF宏 NULL地址不访问不出错
    Activity的四种加载模式
    Git magic 简短git使用命令集
    为什么包含多句代码的宏要用do while包括起来?
    使用lsof来查看FD和进程的关系
  • 原文地址:https://www.cnblogs.com/yexiaocangji/p/6172026.html
Copyright © 2020-2023  润新知