0714作业
一、课堂笔记
1.cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件
设置cookie的方式:
setcookie()设置cookie
setcookie(‘name’,’value’,’expire’,’path’,’domain’,’secure’,’httponly’);
<?php
// 示例:setcookie设置一个cookie,第三个参数设置过期
setcookie("user","emagic",time()+60);
print_r($_COOKIE);
- 通过header响应头设置cookie
<?php
// 示例:header()设置一个cookie
header('Set-cookie:username = Emagictest');
print_r($_COOKIE);
- 取cookie 的方式:通过全局变量$_COOKIE
<?php
// 1:查看单个
echo $_COOKIE['user'],'<hr>';
// 2:查看所有
print_r($_COOKIE);
- 删除cookie的方式:一个是覆盖空值,另外就是设置过期时间是负值,即当前时间time()-减去一个数值
<?php
// 删除cookie方法1
setcookie("username","");
print_r($_COOKIE);
// 删除cookie方法2
setcookie("username","",time()-1);
print_r($_COOKIE);
cookie设置后再第二次加载时才能显示出来的原因
:第一次在响应头中存在,第二次在请求头中显示,因为第一次请求时候浏览器本地还没有cookie,是通过后端php代码设置才响应从在响应头中返回,第二次本地如果没过期已经有了就附带在请求头中发送会话
2.session将数据放于服务器系统下。信息存放在php中目录:session.save_path=”your direction path”
- 在把用户信息存储到 PHP session 中之前,必须先启动会话session_start()
- session_start():创建一个会话,其代码之前不能有其他内容
- php.ini配置文件修改为:session.auto_start = 1 可以不用写session_start()而自动开启
二. 销毁session的方法
1. 创建session,超全局变量方法
<?php
session_start();
// $_SESSION通过超全局变量设置
$_SESSION["user"] = "admintest";
// 查看指定session值 $_SESSION['名称'];
print_r($_SESSION['user']);
echo "<hr>";
// 查看全部session值
print_r($_SESSION);
- session是保存在后台服务器的而不是前段,前端只有个sessionid卡号
2.销毁session
<?php
session_start();
//清空全局变量
unset($_SESSION['user']);
// session_destroy(); 销毁所有session,包括后台文件也删掉,没有参数
// session_destroy();
print_r($_SESSION);
三、使用会话控制cookie技术实现用户7天自动登录(记住密码)
login.php
<?php
// 登录页面
// 获取post提交的值
$username = $_POST['username'];
$password = $_POST['password'];
// echo $username,$password;
// 自定义一个函数用于清除cookie中所有的用户信息
function clearCookies(){
setcookie("username","",0);
setcookie("status","",0);
}
// 判断是否提交数据
if (isset($_POST['submit'])) {
// 判断用户名和密码是否正确
if ($username == 'admintest' && $password=='123456') {
// 调用自定义函数清除之前的登录用户cookie
clearCookies();
// 信息正确才设置cookie
setcookie('username',$username,strtotime(" +7 days"));
// 设置status登陆状态
setrawcookie('status','1',strtotime(" +7 days"));
// 设置完成直接跳转页面
header("Location:index.php");
} else {
exit('用户名或密码不正确');
}
}
// 当点击退出时跳转到该页面并在get中附带action动作,值等于logout
if ($_GET['action'] == "logout") {
clearCookies();
}
?>
<!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>
<body>
<form style="border:solid;width:300px;height:250px;padding:20px;" action="" method="POST">
<h2>用户登录</h2>
<div>
<label for="username">用户名</label>
<input type="text" name="username" id="username" placeholder="请输入登录名" required="required">
</div>
<div>
<label for="password">密  码</label>
<input type="password" name="password" id="password" placeholder="请输入密码" required="required">
</div>
<input type="submit" name="submit" value="提交">
</form>
</body>
</html>
index.php
<?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>
<body>
<h1>登陆成功:</h1>
<?php echo $_COOKIE['username']?>
<a href="login.php?action=logout">退出登录</a>
</body>
</html>