zoukankan      html  css  js  c++  java
  • 浅析PHP中cookie与session技术

    1.cookie是什么?

    cookie指某些站点为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

    通俗来理解就是,你去一个专卖店或者超市买东西,然后店里给你办一张会员卡,以后你的身份和购买信息都存在这个卡里。而这个卡放你身上。之后每次去买东西的时候仅仅须要刷卡就能够了。不用再登记或者记录其它的信息。

    然后将这段话映射了web上,超市结账台就是server端,而你自己就是client,你身上所带的卡也就是存在client中的cookie文件。里面记录了你的帐号password等信息。


    只是要注意的一点,cookie在第二次使用的时候才可以生效。也就是说你在超市第一次买东西。人家会给你办卡,你以后来买就行刷卡了。可是第一次买之前,超市并没有你的不论什么信息,所以你第一次根本就没有卡。

    站点也一样,第一次登录某站点,当然要输入帐号password等信息,然后才干生成cookie存在本地,以便下一次使用。

    同一时候,cookie也有自己的有效期,过了期以后就失效了。本地的cookie文件会被自己主动删除。须要再次登录,输入帐号password,然后生成新的cookie。这样做的主要目的还是为了安全考虑。

    2.cookie机制图解。

    3.cookie用法。

    (1)设置cookie

    bool setcookie ( string $name,$value,$expire,$path,$domain,$secure,$httponly  
    比如:

    setcookie("username","user",0,"/");
    setcookie("username","user",time()+60*60,"/");
    

    每一个參数的使用方法就不作说明了。

    这里重点解析一下上面两中设置cookie方式中的时间和路径。

    第一个其中的时间放了个0进去。难道代表生存时间为0.明显不可能。它有着特殊的意义,表示cookie的有效期随着浏览器的关闭而结束。

    他们的路径中都放了个"/"。

    这个就代表在这个域名下的全部contentpath都能够訪问cookie,也就是说这个站点下的全部页面都能够追踪这个cookie。

    (2)删除cookie

    setcookie("username","",time()-3600,"/");
    和设置cookie一个东西,就是没有了cookie的值,时间比当前时间还早。然后不就过期了。

    (3)查看cookie

    print_r($_COOKIE);
    这家伙大家肯定都懂。就当浪费一下眼神。

    ----------------------------------------------------------------------------------

    -----------------------------我是切割线-------------------------------------------

    ----------------------------------------------------------------------------------

    1.session是什么?

    Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注冊进入系统到注销退出系统之间所经过的时间。

    session的工作原理(摘于百度
    (1)当一个session第一次被启用时,一个唯一的标识被存储于本地的cookie中。

    (2)首先使用session_start()函数,PHP从session仓库中载入已经存储的session变量。
    (3)当运行PHP脚本时。通过使用session_register()函数注冊session变量。

    (4)当PHP脚本运行结束时。未被销毁的session变量会被自己主动保存在本地一定路径下的session库中,这个路径能够通过php.ini文件里的session.save_path指定。下次浏览网页时能够载入使用。
    事实上通俗来讲的话,就是你去超市买东西。办的会员卡记录了你的信息。可是会员卡并非保存在你这里,而是已数据的方式存在超市的系统中,一旦注冊之后能够直接使用。你须要的时候,直接能够使用。可是你一旦离开超市,那个会员卡也就失去了效用直到你的下一次购买。同一时候。这个会员卡的唯一标识也就是你自己,其它不论什么人都没有办法使用你的会员卡。直接对号入座就非常好理解了。


    session和cookie的一大不同点就是,session注冊之后直接使用,也就是第一次购买就能够使用,而cookie是经过第一次购买之后才将信息存入会员卡。然后第二次開始使用。

    2.session机制图解。

    3.session用法。

    (1)设置session

    session_start();

    $_SESSION['username']="user";

    每一次在使用session之前都须要进行开启session,就当是通常进门都先须要开门一样。而在设置session时和对变量进行赋值没有多大的差别,事实上$_SESSION本身就是一个变量。

    (2)删除session

    这个相对步骤就多了点,而不是cookie里面一句话搞定。

    //开启session
    session_start();
    
    //注销session
    session_unset();
    
    //销毁session
    session_destroy();
    
    //同一时候销毁本地cookie中的sessionid
    setcookie(session_name(),"",time()-3600,"/");
    (3)查看session

    print_r($_SESSION);

    1.cookie与session优缺点。

    cookie本身是存放在client中。仅占用几kb的内存大小。每次登录站点的时候都会带上本地的cookie进行验证,省去了麻烦的反复输入。可是安全性不是非常高,毕竟是存放在本地的文件。尽管都是进行加密了的,一旦电脑数据被盗取,cookie就非常有可能会被获取。

    session存放在server中,占中内存虽小,可是用户基数够大的情况下,会对server造成非常大的负荷。可是,数据放在server上,总归风险减少了很多。

    虽说没有不透风的墙,只是风也是能够非常小非常小的。这比喻。。

    有同学可能疑问,session使用时。会有sessionid存在本地,一旦获取是否能登录。答案当然是否定的,由于每次的id都是不一样的。

  • 相关阅读:
    lua "Hello, world!"[转]
    用16进制编辑器编写一个DLL文件【转自看雪】
    Lua脚本语言入门(目前魔兽使用的可以写在宏内的语言)转自中国Lua开发者
    some tips about web hacking
    DevCpp/Mingw32/GCC专栏
    .NET中的幕后英雄MSCOREE.dll [转]
    手写可执行程序[ 转自看雪]
    VC下编译lua和luabind[转]
    简论程序是如何动态修改内存或指令的【转自看雪】
    一些链接(转仅供收藏)
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6911338.html
Copyright © 2011-2022 走看看