美文网首页
Cookie和Session详解

Cookie和Session详解

作者: bo_bo_bo_la | 来源:发表于2017-11-20 22:25 被阅读75次
    • Cookie

    1. 什么是Cookie

    Cookie实际上是一小段的文本信息。客户请求服务器,如果服务器需要记录该用户状态,就使用response想客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再次请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容,换句话说,Cookie不适合用带有隐私类信息。

    <?php
        print_r($_COOKIE);
        if(!empty($_COOKIE['num'])) {
            $_COOKIE['num']++;
            setcookie("num",$_COOKIE['num']);
            echo $_COOKIE['num'];
        }else {
            setcookie('num',1);
        }
        setcookie('name','da',time()+24*3600);
    ?>
    

    例如上端代码,当每次刷新界面的时候num都会自增1,实现界面浏览次数。

    2. Cookie的不可跨域性

    Cookie在客户端是由浏览器管理的,浏览器能够保证Google只会操作Google的Cookie,而不会操作baidu的Cookie,从而保证用户的隐私安全

    <script type="text/javascript">
            var indexDate = new Date();
            $.ajax({
                type:"get",
                url:"count.php?actionC=content",
                async:true,
                data: {},
                success: function(data) {
                    $("#boxContent").html("这是content的数据: "+data);
                }
            });
            document.cookie = "contentTime="+indexDate; 
        </script>
    
    <?php
                if(!empty($_COOKIE[$val1])) {
                    $_COOKIE[$val1]++;
                    setcookie($val1,$_COOKIE[$val1]);
                    echo $_COOKIE[$val1];
                }else {
                    setcookie($val1,1);
                }   
    ?>
    

    3. Cookie的值

    <script type="text/javascript">
                //设置一个cookie
                document.cookie = "user=sdr;";
                //获取所有的cookie
                var str = document.cookie;
                //如何从所有cookie中取出特定名的cookie值
                //cookie特点:  以键值对形式存储 用分号空格分隔每一个cookie
                //取num值
                var start = str.indexOf('num=')+4;
                var end = str.indexOf(';',start);
                //使用substring获取值
                var val = str.substring(start,end);
    </script>
    

    4. Cookie的有效期

    • 后台设置
    //设置一个有生命期的cookie
        //过期时间是时间数,比如 一天后失效  那就是24*3600秒后失效
        setcookie("newMember","rrrr",time()+24*3600);
    
    • 前台设置
    <script type="text/javascript">
                function setCookie(name,value,path,expires) {
                    //设置一天之后失效
                    var current_data = new Date();
                    //将日期设置为一天之后的日期
                    current_data.setDate(current_data.getDate() + expires);
                    //将日期转成GMT字符串  得到的是对象
                    var expires_str = current_data.toGMTString();
                    //设置cookie的过期日期
                    document.cookie = name+"="+value+"; path="+path+";expires="+expires_str;
                }
                setCookie("user","dddd","/",1); 
            </script>
    
    • Cookie总结

      • Cookie 是存储在浏览器哭护短的一片数据
      • 可以同时被前台和后台操作。当前台刷新后,刷新后台,此时num会在前台基础上增1。
      • 可以跨页面存储
      • Cookie是由生命期,默认与浏览器进程相同,如果浏览器退出, Cookie会被注销
      • Cookie特点,以键值对形式存储,用分号空格分隔每一个Cookie
    • �Session

    1. 什么是Session

    Session是一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,为Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找客户的状态就可以了。
    如果说Cookie是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案袋就可以了。

    2. Session实现用户登录

    上面提到过,Session数据存储在服务器中,每个会话分配一个单独的Sessioin_id,该Session_id通过Cookie传送到前台,默认的session_id名称就是PHPSESSION,前台只能看到Session的id,为不能修改Session,这样我们就可以用Session来保存一些隐私信息。

    3. Session 使用

    使用Session之前,需要先开启会话。Session存储在Session数组$_SESSION里面。相对于Cookie,Session存储比较安全,但如果Session数量较多,会导致服务器性能下降。

    相关文章

      网友评论

          本文标题:Cookie和Session详解

          本文链接:https://www.haomeiwen.com/subject/slpbvxtx.html