图书馆占座系统(六)


第一次更新(2018.2. 14:58)

今天一上午搞定了cookie,本来我把cookie写在了JavaScript部分,后来感觉不太对,因为不能确定是否是正确的用户名和密码就把他写进了cookie,所以我把它放在了php文件内
JavaScript部分代码如下:

function setcookie(name,value,day)//注意这个name为cookic的你name,value为cookic的value,如果要存多个信息,请多次调用钙函数
        {
            var date = new Date();//新建获取日期对象

            date.setDate(date.getDate()+day);//设置在day天后过期

            document.cookie = name+'='+value+';expires='+date;  //注意拼接字符串       
            }
        function getcookie(name)//设置取出cookie
        {
            var arr = document.cookie.split('; ');//以  ;和 空格来分割字符串
            var i = 0;//设置循环变量
            for (i=0;i<=arr.length;i++)
                {
                    var arr2=arr[i].split('=');
                    if (arr2[0]==name)
                        {

                            return arr2[1];
                        }
                }
            return " ";

        }
    ///////////////////////////////////

        //////////////////////调用cookie函数,并将用户名填入//////////////////////////
    window.οnlοad=function()//页面载入时调用函数
    {

        var name = $('input[name="name"]').val();//获取输入框中的name值
        var password = $('input[name="password"]').val();//获取输入框中的password

        function cook(){
        setcookie('username',name,'1');//调用cookic函数,写入值
        setcookie('passWord',password,'1');//调用cookic函数,写入值
        //alert(document.cookie);
        name.value = getcookie('username');//设置让用户名自动填充
        password.value = getcookie('passWord');//设置让密码是自动填充
    }}

php部分代码如下:

name=$_POST['name'];
$password=$_POST['password'];

先获取传入的用户名和密码

setcook($name,$password);

当用户名和密码正确是调用设置cookie的函数,并把名字和密码传进去

function setcook($name,$password){
setcookie("name",$name);//设置cookic名字为name,值为$name,过期时间为关闭浏览器就过期
setcookie("password",$password);//设置cookic名字为password,值为$password,过期时间为关闭浏览器就过期,这是默认的,如果想在1个小时后过期,最后加上time()+3600 即可。

}

这是设置cookie的的代码,中间有个小插曲,因为是一个函数,全局变量和局部变量的问题,所以 我把用户名和密码传进去,而不能直接用,我没有设置cookie的过期时间,因为默认是关闭浏览器就失效,我需要这样的效果。

代码:

function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=")
  if (c_start!=-1)
    { 
    c_start=c_start + c_name.length+1 
    c_end=document.cookie.indexOf(";",c_start)
    if (c_end==-1) c_end=document.cookie.length
    return unescape(document.cookie.substring(c_start,c_end))
    } 
  }

 return "";

这是判断cookie存在及查找的方法

  1. cookie保存在系统中的时候是以“cookie名1=cookie值;cookie名2=cookie值”这样的方式来保存的。
  2. document.cookie是返回包含所有cookie的字符串。
  3. document.cookie.indexOf(c_name + “=”)是取得这个cookie名在整个cookie中的位置。【加”=”号:取cookie名加上等于号的位置,比方整个cookie是”user=tony;passwd=user123”,这时候查找名为user的cookie的值的时候,是查找”user=”的位置,如果不要等于号,就会找到其他位置的”user”,比如后面密码里面也有user字符但并不是cookie名所在的位置。因为cookie中cookie名都是唯一的,所以加上等于号就不会出错了。】

  4. c_start=c_start + c_name.length+1是用先前取得的位置加上cookie名的长度再加1,就是把位置确定在这个cookie名的”=”符号的后面。

  5. c_end=document.cookie.indexOf(“;”,c_start)是从上一步的位置开始查找,直到”;”的位置。
  6. document.cookie.substring(c_start,c_end))就是取该cookie名的等号后面到分号前面的字符串,即对应的cookie值。

第二次更新(2018.8.6 16:24)

因为cookie设置为关掉网页就会失效,而且cookie会被同名覆盖,所以我在一楼直接检查cookie党的长度来确认是登录,
代码如下

cheakccook();
        /***************************************检查的cookie是否存在*****************************************/
        function cheakccook(){
            {   
                if(document.cookie.length==0)//判断cookie为空,
                {   
                    alert("请重新登录");
                    window.location.href='登录.html';//在当前页面打开
            }


            }
        }

因为刚开始不知道我的cookie会被覆盖,所以开始我想用window.close
来关掉窗口以达到清空cookie的目的,可是不知为啥不成功,所以我又换了一种方法,设置当前cookie过期时间为-1。在我写代码的时候,发现设置时间需要当前cookie的value值,但是我的cookie是在php里面设置的,所以不好实现,当我调试代码的时候,突然发现cookie会覆盖,那就不用再去清除cookie了,因为我的设置cookie的过期时间和我所需要的cookie,保证了纯净性,也就是说这个cookie,只能是当前用户的cookie,这就很好把所有功能连接起来了。所以就不需要清除cookie了。

发布了29 篇原创文章 · 获赞 33 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42568510/article/details/81454661