如何创建和读取cookie的值
概述
Cookie是临时存储,以键值对的形式存储用户数据。Cookie存储在客户端系统上。当用户访问网站时,会向托管网站的服务器发送请求,然后服务器加载内容并将其发送回接收端(接收端是客户端或用户)。服务器发送Cookie以存储用户数据以供将来使用。但最终取决于用户是否要将登录凭据存储到Cookie中。就像可食用的饼干中填充巧克力一样,在网页Cookie中,Cookie是“甜甜圈”,而填充的巧克力是Cookie的值。
语法
创建Cookie的语法如下:
document.cookie= cookieName + cookieValue + cookieExpiry;
cookieName − 这是存储值的Cookie名称。例如:用户名、地址等等。
cookieValue − 这是存储在Cookie名称键中的值。例如:Alex、美国等。
cookieExpiry − 这是一个数值,表示Cookie在客户端浏览器中保持有效的天数。
算法
步骤 1 − 在文本编辑器(如Sublime Text或Visual Studio Code)中创建一个HTML文件。在HTML文件中添加HTML基本结构。
步骤 2 − 现在,向HTML文档的body标签添加onload()事件函数。将一个名为“myFunc()”的函数传递给onload()函数。
<body onload="myFunc()"></body>
步骤 3 − 现在,在与HTML文件相同的文件夹中创建一个script.js文件。在body标签结束之前,将script.js文件链接到HTML文档。
<script src="script.js"></script>
步骤 4 − 现在,在脚本文件中创建一个箭头函数,该函数检查客户端系统中是否存在Cookie。函数名称应与我们在body标签中作为属性传递给onload()函数的名称相同。
myFunc = () => { var cl = readCookiesValue("clients_Name"); var ad = readCookiesValue("clients_address") if (cl != "") { alert("Welcome " + cl +" from "+ad + “ to the server”); } else { cl = prompt("Write your name", ""); ad = prompt("Write your address", ""); if (cl != "" && cl != null) { createCookies("clients_Name", cl, 30); createCookies("clients_address", ad, 30); } } }
步骤 5 − 现在,创建一个名为“createCookies”的箭头函数,该函数将为用户创建一个Cookie。创建Cookie将cookie名称、cookie值和cookie有效期作为三个参数。Cookie将使用“document.cookie”语法创建。
createCookies = (ckName, ckValue, ckExpiry) => { var cdate = new Date(); date.setTime(cdate.getTime() + (ckExpiry * 24 * 60 * 60 * 1000)); var expires = "expires=" + cdate.toGMTString(); document.cookie = ckName + "=" + ckValue + ";" + expires + ";path=/"; }
步骤 6 − 创建Cookie后,创建一个名为“readCookiesValue”的箭头函数,该函数将读取浏览器中当前的Cookie,这将cookie名称作为参数,并返回cookie的值。
readCookiesValue = (cookieName) => { var name = cookieName + "="; var decoded_cookie = decodeURIComponent(document.cookie); var dcooks = decoded_cookie.split(';'); for (let i = 0; i < dcooks.length; i++) { var c = dcooks[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; }
步骤 7 − Cookie的读取和创建函数已成功创建。
示例
在这个例子中,我们创建了一个函数,该函数将检查客户端浏览器中是否存在Cookie,如果客户端浏览器中不存在Cookie,则它将为当前客户端创建Cookie,并将其存储到Cookie过期之前。
<html> <head> <title>Create and read cookie value</title> </head> <body onload="myFunc()"> <h1 style="text-align: center;color: green;" onload="myfunc()">Welcome to tutorialspoint.com</h1> <script src="script.js"></script> <script> myFunc = () => { var client = readCookiesValue("clients_Name"); var adress = readCookiesValue("clients_address") if (client != "") { alert("Hello " + client +" from "+adress); } else { client = prompt("Enter your name", ""); adress = prompt("Enter your adress", ""); if (client != "" && client != null) { createCookies("clients_Name", client, 30); createCookies("clients_address", adress, 30); } } } createCookies = (cookieName, cookieValue, cookieExpiry) => { var date = new Date(); date.setTime(date.getTime() + (cookieExpiry * 24 * 60 * 60 * 1000)); var expires = "expires=" + date.toGMTString(); document.cookie = cookieName + "=" + cookieValue + ";" + expires; + ";path=/"; } readCookiesValue = (cookieName) => { var name = cookieName + "="; var decoded_cookie = decodeURIComponent(document.cookie); var dcooks = decoded_cookie.split(';'); for (let i = 0; i < carr.length; i++) { var c = carr[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; } </script> </body> </html>
输出
下图显示了上述示例的输出,在该示例中,我们构建了读取和创建Cookie的函数。因此,当用户第一次在其浏览器中加载上述示例时,该函数将检查当前请求中是否存在Cookie,如果不存在,则客户端将收到一个提示,要求其输入姓名,客户端在框中输入姓名后,将收到另一个提示,要求其输入城市名称,然后将重定向到主要内容。因此,当客户端第二次加载网页时,该函数将再次检查Cookie,此时Cookie存在于客户端浏览器中,因此客户端将收到一条问候消息“您好,cityName 的 clientName”,您可以在第三张图片中看到。
结论
Cookie用于所有应用程序,例如irctc和其他网站的预订和浏览目的。它们允许用户登录网站,只要Cookie有效。有时Cookie也会对系统构成危险,因为某些有害或盗版网站可能会创建Cookie来监视您的系统,因此建议不要接受来自未知网站的Cookie。