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");