php+cookie session用户登录
- 用户登陆的思路
目标:登录之后才能执行后台的某些操作,比如 文章增删改查
问题细分:
1. 怎么实现登录
1. 怎么接收用户输入的账号密码
form表单
2. php脚本中如何获取表单提交的账号密码
$_POST 获取
3. 对比用户提交的账号密码 和 数据库中保存的账号密码
使用用户提交的账号密码 从数据库中查找, 如果查找到,就表示账号密码正确,否则反之
2. 怎么实现登录之后才能访问(权限控制)
1. 登录时 设置sesion信息:$_SESSION['username'] = "admin"
2. 在其他页面 检测是否有这个session信息: if(!isset($_SESSION['username'])){}
- php和html混编
test.php
<?php
if(isset($_SESSION["name"])){
header("location:index.php");
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
</body>
</html>
- login.php
<?php
// session_start() 之前不能有任何内容输出
session_start();
// // 如果用户未登录,我们就设置cookie信息
// // isset判断一个变量是否已定义, 如果已定义就返回true,否则返回false
// if(!isset($_COOKIE['name'])){
// // 为保证账号安全,通过 md5 算法加密账号密码信息返回给浏览器。
// // md5摘要算法的特性如下:
// // 1. 同一个内容加密后,只会得到同一个与之对应的字符串
// // 2. 无法通过 加密后的结果 逆推出原始内容
// // setcookie("name", md5("admin"."admin888"));
// echo "登录成功";
// } else {
// echo "已经登录";
// }
if(!isset($_SESSION['name'])){
$_SESSION["name"] = "admin";
$_SESSION["age"] = 18;
echo "登录成功";
} else {
echo "已经登录";
}
- index.php
<?php
// session_start() 之前不能有任何内容输出
session_start();
// // 如果设置了cookie信息
// // 并且获取到,通过验证是合法的cookie
// if(isset($_COOKIE['name']) && $_COOKIE['name']==md5("admin"."admin888")){
// echo "账号已登录";
// }else{
// // 页面跳转到 login.php
// header("location:login.php");
// }
if(isset($_SESSION['name'])){
echo "欢迎 {$_SESSION['name']} 登录";
}else{
// 页面跳转到 login.php
header("location:login.php");
}
- logout.php 退出登陆
<?php
// 启用session
session_start();
// 销毁所有session
session_destroy();
header("location:login.php");