通过js获取PHP设置的cookie(全实例讲解)

制作网页我们通常都要做一个登陆界面,如果对于不是安全性要求很高的网站,这个登录界面我我们当然不希望频繁输入账户密码来验证身份,我们想要的是只要一次验证,就可以长时间保持登陆状态。

session虽然可以实现跳过登陆验证,但是它是临时的,关闭页面后或者关闭浏览器之后,它就会消失,我觉得不是很方便。

后来我试过一种方法就是就是给数据表(账户密码信息的)添加一列【登陆状态】列,通过识别【登陆状态】列的值来确定该用户是否已经经过验证了。

但是,以上的两种方法都不是我想要的,我需要的是只要在同个浏览器登陆该页面,我只要登陆验证身份一次,然后很长一段时间都能不需要验证,直接到我的主页。

cookie可以实现,它是服务器存储在电脑里面的,可以设置cookie时效,一天,一个月,一年都OK。

以下是正文

以下是正文

以下是正文

我采用的是php设置cookie的方法

然后js写在HTML里面,获取cookie

下面这个函数是核心,不是我写的,其实整篇文章这个函数最关键,我写这边文章的主要目的是整体理一下思路,我想把自己的思路写下来,也可以提供你们参考。这个函数我是在网上找的,很容易找到,里面的那些代码我没细看,我这里直接调用了,加入参数就能用,下面我会细致地讲。

  1. <script type="text/javascript">
  2. function getCookie(c_name){
  3. if (document.cookie.length > 0){
  4. c_start = document.cookie.indexOf(c_name + "=");
  5. if (c_start != -1){
  6. c_start = c_start + c_name.length + 1;
  7. c_end = document.cookie.indexOf(";", c_start);
  8. if (c_end == -1){
  9. c_end = document.cookie.length;
  10. }
  11. return unescape(document.cookie.substring(c_start, c_end));
  12. }
  13. }
  14. return "";
  15. }
  16. </script>

先放效果图

登陆页面(账户:A1234;密码:1234)

1.png

账户密码错误弹窗显示

2.png

账户密码正确,进入我的主页,点击退出登陆,可以回到登陆页面

3.png

四个文件(全部)
1.html
2.php
my.html
my.php

直接放代码(附解析)

1.html(登录页面)

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>登录页面</title>
  6. //这一段代码是在html文件刚加载的时候就要执行的,也就是说,每次刷新页面都会先判断cookie在不在
  7. //cookie失效的话,在接着执行后面的html代码
  8. <script type="text/javascript">
  9. function getCookie(c_name){
  10. if (document.cookie.length > 0){
  11. c_start = document.cookie.indexOf(c_name + "=");
  12. if (c_start != -1){
  13. c_start = c_start + c_name.length + 1;
  14. c_end = document.cookie.indexOf(";", c_start);
  15. if (c_end == -1){
  16. c_end = document.cookie.length;
  17. }
  18. return unescape(document.cookie.substring(c_start, c_end));
  19. }
  20. }
  21. return "";
  22. }
  23. //调用函数,括号里面参数是php设置cookie的名称是"nnn",要加双引号
  24. var nc= getCookie("nnn");
  25. //我这里提醒一下,cookie失效之后,它的值并不是空,而是很长的一段英文数字组合(26位)
  26. //判断cookie是否是A开头,同时也要是5位,如果是就直接跳转到【我的主页】
  27. if((nc[0]=='A')&&(nc.length==5)){
  28. window.location.href="http://192.168.2.107/test/login/my.html";
  29. }
  30. </script>
  31. </head>
  32. <body >
  33. <a href="http://192.168.2.107/test/login/1.html">我的主页</a>
  34. //这里设置一个指向本页的链接,如果没登录验证过就留在登陆页面,验证过就直接到【我的主页】
  35. <p>js获取PHP设置的cookie实例</p>
  36. <br>
  37. //表单验证,这个在我上一篇博客讲过了,不赘述了
  38. <form action="2.php" method="POST">
  39. <input type="text" name="name" placeholder="请输入用户名"/>
  40. <br>
  41. <br>
  42. <input type="password" name="password" placeholder="请输入密码"/>
  43. <br>
  44. <br>
  45. <input name="login" type="button" value="登录" onclick=submit() />
  46. </form>
  47. </body>
  48. </html>

2.php

  1. <?php
  2. //判断账号和密码的正确性
  3. if(($_POST["name"]=="A1234")&&($_POST["password"]=="1234"))
  4. {
  5. $na=$_POST["name"];//保存正确的账号和密码
  6. $pw=$_POST["pwd"];
  7. //设置cookie,把正确的账号密码写入cookie,"nnn"是cookie的名称
  8. //time()+3600*24*30,设置cookie有效时长为3600秒(1个小时)*24*30 =1个月
  9. setcookie("nnn",$na,time()+3600*24*30);
  10. setcookie("ppp",$pw,time()+3600*24*30);
  11. header("location:http://192.168.2.107/test/login/my.html"); //跳转【我的主页】
  12. }
  13. else{
  14. echo "<script language=\"JavaScript\">";
  15. echo "alert(\"该用户不存在或者密码不正确\");history.back();</script>";
  16. //如果账号密码不正确,弹出提示窗口
  17. }
  18. ?>

my.html(【我的主页】页面)

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Insert title here</title>
  6. </head>
  7. <body>
  8. <a href="http://192.168.2.107/test/login/1.html">我的主页</a>
  9. <br>
  10. <p>这是我的主页</p>
  11. <form action="my.php" method="POST">
  12. <input name="ex" type="button" value="退出登录" onclick=submit() />
  13. //点击退出登陆,会执行my.php文件,会把之前存的cookie失效,然后回到登陆页面
  14. </form>
  15. </body>
  16. </html>

my.php

  1. <?php
  2. setcookie("nnn","",time()-3600);//令cookie失效
  3. setcookie("ppp","",time()-3600);
  4. header("location:http://192.168.2.107/test/login/1.html");//回到登陆页面
  5. ?>

代码思路图

4.png

应该能看得明白吧,写得很用心了,如果想移植我的代码的话,记得改那些地址,参数什么的,应该都懂得吧

来源:https://blog.csdn.net/weixin_42899627/article/details/104741885

文章由官网发布,如若转载,请注明出处:https://www.veimoz.com/272
0 评论
2.9k

发表评论

!