文件结构:
login.html:
<!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 action="./loginCookie.php" method="post"> 姓名:<input type="text" name="username" placeholder="请输入用户名"><hr> 密码:<input type="password" name="password" placeholder="请输入密码"><hr> <input type="submit" value="提交按钮"> </form> </body> </html>
loginCookie.php:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <?php include 'config.php'; /**1、连接数据库 */ $conn = mysqli_connect(DB_HOST,DB_USER,DB_PWD,DB_NAME); if(!$connect){ die("could not connect:".mysqli_error()); }else{ echo "连接成功<br>"; /**识别cookie,判断是否访问过,有无cookie或者是否过期 */ if (($_COOKIE['username'] != null)&&($_COOKIE['password'] != null)) { $userName = $_COOKIE['username']; $password = $_COOKIE['password']; /** 连接数据库,从db获取用户信息 */ // $conn = mysqli_connect('localhost','root','root','login'); $res = mysqli_query($conn,"select * from user where `username` = '$userName' "); $row = mysqli_fetch_assoc($res); if ($row['password'] == $password) { /** 验证通过后跳转到登录后的欢迎页面 */ header('location: welcome.php' . "?username=$userName"); } }else{ echo("上一个COOKIE过期"); } /**如果第一次访问或者cookie过期则重新到数据库查找对比 */ if(($_POST['username'] != null)&&($_POST['password'] != null)){ $userName = $_POST['username']; $password = $_POST['password']; /** 连接数据库,从db获取用户信息 */ // $conn = mysqli_connect('localhost','root','root'); // mysqli_select_db($conn,'login'); $sql = "select * from user where `username` = '$userName' "; $res = mysqli_query($conn,$sql); $row = mysqli_fetch_assoc($res);/**从结果集中取得一行作为关联数组 */ /**执行判断--用户名和密码是否正确 */ if($row){ /**echo('用户名存在');用户名存在的情况下判断密码 */ if ($row['password'] == $password) { /** * 密码验证通过,设置cookies,把用户名和密码保存在客户端 * 设置时效一个月60*60*24*30,一个月后这个cookie失效。这里我们设置60s失效,为time()+60 */ setcookie('username',$userName,time()+60); setcookie('password',$password,time()+60); /** 最后跳转到登录后的欢迎页面 */ header('location: welcome.php' . "?username=$userName"); } }else{ /**不存在该用户 */ exit('用户名错误'); } }else{ echo "请输入用户名或密码"; } } /**5、关闭连接 */ $close = mysqli_close($connect); if(!$close){ die("关闭数据库失败"); }else{ echo "关闭成功"; } ?>
config.php:
<?php //数据库服务器 define('DB_HOST', 'localhost'); //数据库用户名 define('DB_USER', 'root'); //数据库密码 define('DB_PWD', 'root'); //数据库名 define('DB_NAME', 'login'); //字符集 define('DB_CHARSET', 'utf8'); ?>
welcome.php:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <?php $user = $_GET['username']; echo "欢迎"."<h1>".$user."</h1>"; ?>
.