博客列表 >PHP Cookie和Session和七天自动登录小实战

PHP Cookie和Session和七天自动登录小实战

Dong.
Dong.原创
2020年08月31日 17:43:581250浏览

1.Cookie

1.1 cookie的含义

cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。

1.2 如何创建cookie

创建cookie可以使用setcookie()函数或者header()函数,函数需要在标签之前。

  • setcookie():其语法是:setcookie(name, value, expire, path, domain),其中name和value是必选,其他参数根据情况可选

// 示例:设置一个cookie,1小时后过期setcookie("user","Alice",time()+60*60);print_r($_COOKIE);

  • header():

// 示例:设置一个cookieheader('Set-cookie:username = Jack');print_r($_COOKIE);

1.3 取回cookie

// 方式一:查看单个echo $_COOKIE['user'],'';// 方式二:查看所有print_r($_COOKIE);

1.4 删除cookie

// 将cookie的过期时间设置为过去setcookie("user","Alice",time()-3600);print_r($_COOKIE);

1.5 更新cookie

// 更新cookiesetcookie("username","Lisa");// 设置cookie后第一次刷新浏览器,cookie在response headers这里,这表示服务器告知浏览器有一个cookie需要你来保存一下// 第二次刷新后,cookie就会存在于request headers这里了// 更新cookie时,参数要一一对应setcookie("username","Lisa666");

1.6 浏览器对cookie进行url编码

// setrawcookie():防止存放cookie时,浏览器对它进行URL编码// 先设置好两个示例cookie,开发工具中查看setcookie("user","小明");setcookie("email","666666@qq.com");// 然后使用setrawcookie()对cookie值更新setrawcookie("user","小王");setrawcookie("email","888888@qq.com");



2. Session

2.1 sessio的含义

PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。

2.2 sessio的工作原理

Session 的工作机制是:为每个访客创建一个唯一的 id (UID),并基于这个 UID 来存储变量。是由服务器端生成的。

2.3 开启sessio会话

在把用户信息存储到 PHP session 中之前,必须先启动会话,必须位于标签之前。
先找到php.ini,设置 session.auto_start = 0

开启sessio会话
session_start();

2.4 设置sessio

// 开启会话session_start();// 设置session$_SESSION["user"] = "Alice";$_SESSION["email"] = "123456@qq.com";

2.5 取回sessio

// 开启会话session_start();// 设置session// $_SESSION["user"] = "Alice";// $_SESSION["email"] = "123456@qq.com";// 取回sessionecho $_SESSION['user'],'';echo $_SESSION['email'];

2.6 销毁sessio

// 开启会话session_start();// 设置session// $_SESSION["user"] = "Alice";// $_SESSION["email"] = "123456@qq.com";// 取回session// echo $_SESSION['user'],'';// echo $_SESSION['email'];// 销毁session// 方式一:销毁单个// unset($_SESSION['user']);// echo $_SESSION['user'],'';// echo $_SESSION['email'];// 方式二:销毁所有session_destroy();echo $_SESSION['user'],'';echo $_SESSION['email'];

3. 7天免登录案例

//模拟用户数据$users=[['username'=>'admin','password'=>'123456'],['username'=>'peter','password'=>'peter'],];//接收用户POST数据$username = trim($_POST['username']); //过滤空格$password = $_POST['password'];//清除cookie中所有用户信息-定义函数,方便调用function clearCookies(){setcookie("username"," ",time()-3600);setcookie("isLogin", " ", time()-3600);}//检查用户名密码function chkUser(string $user, string $pass, array $users){foreach($users as $vulue){if ($user === $vulue['username'] && $pass === $vulue['password']) {return true;}}return false;}if ($_GET['action'] == "chkLogin"){ //登录验证if (chkUser($username,$password,$users)) {clearCookies();setcookie("username",$username,strtotime(" +7 days"));setcookie("isLogin","1",strtotime(" +7 days"));header("Location:login.php?action=home");}else{exit('');}}elseif($_GET['action'] == "home"){ //首页if(isset($_COOKIE['username']) && $_COOKIE['isLogin'] == "1"){echo 'PHP中文网欢迎您'.$_COOKIE['username'].'|退出';}else{exit('');}}elseif($_GET['action'] == "logOUT"){ //退出clearCookies();header("Location:login.php");}?><!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title></head><style>    .box{        max-width: 20em;        margin: 0 auto;        padding: 1.5em;        border: 1px solid #ffffff;        display:flex;        flex-direction: column;        line-height: 100%;    }    .box p{        text-align: center;    }    button{        width: 100%;        height: 3em;        font-size: 1.0em;        font-weight: bold;    }    input{        width: 60px;        height: 2em;    }</style><body>    <form action="?action=chkLogin" method="POST"></form>    <div class="box">        <p>用户名:<input type="text" name="username"></p>        <p>密码:<input type="text" name="password"></p>        <p><button>提交</button></p>    </div></body></html>

总结:

  • 通过cookie保存用户信息实现7天免登录

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议