zoukankan      html  css  js  c++  java
  • Cookie是储存在电脑文本文件中的数据,用于保存访问者的信息,并可以在下次打开页面时引用。

    20180909 解析JS Cookie的设置,获取和检索

    引用: JavaScript Cookie - by runoob.com

    Cookie是储存在电脑文本文件中的数据,用于保存访问者的信息,并可以在下次打开页面时引用。

    页面在设置/引用访问者信息时,需要在JavaScript中对Cookie进行设置,获取和检索三个函数。

    例如当访问者首次访问网页时,网页会对访问者进行检索(访问者数据),无搜索信息时则页面需要访问者进行登录(设置数据),当下次再次登录时页面会自动返回访问者数据。

    以下是我个人对使用Cookie保存用户名案例的解读:

    1) 检索Cookie

      页面在被打开(onload)时调用"检索函数"(checkCookie),如果Cookie中存在访问者信息则调用"获取函数"(getCookie)并返回用户名,没有则调用"设置函数"(setCookie)对用户名进行设置。

    复制代码
     1 <body onload="checkCookie()">                              <!--当页面被打开时调用checkCookie()-->
     2 
     3 <script>
     4     function checkCookie()
     5     {
     6         var user = getCookie("username");                  //调用getCookie()中的username,若不为空则返回值(用户名)
     7         if (user!=""){
     8             alert("welcome back " + user);
     9         }     
    10         else {
    11             user = prompt("Please enter your name: ","");  //页面弹出“请输入用户名”窗口,填写user的值
    12             if (user!="" && user!=null){                   //当输入的用户名不为空值时,将user作为属性调入setCookie()中
    13                 setCookie("username",user,30);
    14             }
    15         }
    16     }
    17 </script>
    18 
    19 </body>
    复制代码

    首次登陆会弹出窗口:

    2. 设置Cookie

      通过定义函数的参数setCookie(cname,cvalue,exdays)将访问者信息的值保存到"Cookie名称","Cookie值"和"Cookie过期时间"中.

      在上述检索函数中,让我输入用户名"Akon Wong"后,函数将"username","Akon Wong",30这三个值保存到setCookie(cname,cvalue,exdays)中

    复制代码
    1 function setCookie(cname,cvalue,exdays)
    2 {
    3     var d = new Date();
    4     d.setTime(d.getTime()+(exdays*24*60*60*10000));  //设置时间为当前时间+exdays的毫秒值(在checkCookie中,设置exdays的值为30)
    5     var expires = "expires="+d.toUTCString();     //设置时间为字符串显示   (toGMTString()已作废)
    6     document.cookie = cname+"="+cvalue+";"+expires;  //设置cookie的格式,通过checkCookie()后cookie的字符串结果为"username=Akon Wong;'到期日期'"
    7 }
    复制代码

    3. 获取Cookie

      当下次再打开页面后,页面的checkCookie函数会在getCookie函数中获取到Cookie储存的用户名"Akon Wong",并返回值。

    复制代码
     1 function getCookie(cname)
     2 {
     3     var name = cname + "=";                                                  //定义一个值为"username="的变量
     4     var ca      = document.cookie.split(';');                                //将cookie的字符串数据转变为以逗号分隔的数组
     5     for (var i=0; i<ca.length; i++){                                         //通过for函数循环cookie的数据,
     6         var c = ca[i].trim();
     7         if (c.indexOf(name)==0){ return c.substring(name.length,c.length); } //当数据中包含关键字"name"时,返回"username="后面的字符(即用户名)
     8     }
     9     return "";                                                               //若数据中没有找到关键字,则返回空值,进入checkCookie的初始值设置
    10 }
    复制代码

     再次登录的欢迎词:

    完整函数:

    复制代码
     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="utf-8">
     5         <title>Set Cookies</title>
     6     </head>
     7     <body onload="checkCookie()">
     8         
     9         <p id="demo"></p>
    10         
    11         <script>
    12             function setCookie(cname,cvalue,exdays)
    13             {
    14                 var d = new Date();
    15                 d.setTime(d.getTime()+(exdays*24*60*60*1000));   //set up the due day of cookie
    16                 var expires = "expires="+d.toUTCString();        
    17                 document.cookie = cname+"="+cvalue+"; "+expires; 
    18                 //the type of cookie: cookieName=value; due day
    19             }
    20             
    21             function getCookie(cname)
    22             {
    23                 var name = cname + "=";
    24                 var ca   = document.cookie.split(';'); //return 'the "username";username; time'
    25                 for (var i=0; i<ca.length; i++){
    26                     var c = ca[i].trim();
    27                     if (c.indexOf(name)==0){ return c.substring(name.length,c.length); }
    28                 }
    29                 return "";
    30             }
    31             
    32             function checkCookie()
    33             {
    34                 //run getCookie() to check if the username is exist.
    35                 var user = getCookie("username");
    36                 if (user!=""){
    37                     alert("welcome back " + user);
    38                 }
    39                 else {
    40                     user = prompt("Please enter your name: ","");   
    41                     //prompt() can return the message that user input
    42                     if (user!="" && user!=null){
    43                         //run setCookie() to store the messages into cookie.
    44                         setCookie("username",user,30);
    45                     }
    46                 }
    47             }
    48         </script>
    49     </body>
    50 </html>
    复制代码
  • 相关阅读:
    (转)C++ typename的起源与用法
    EOS智能合约深度解析
    cmake常用变量和命令解析
    (转)Linux下source命令详解
    eosio_install.sh执行过程
    java之collection总结
    Guava之RangeMap
    java file.listFiles()按文件名称、日期、大小排序
    Java下载文件的几种方式
    Java泛型Class<T>、T与Class<?>
  • 原文地址:https://www.cnblogs.com/proving/p/11921578.html
Copyright © 2011-2022 走看看