php cookie博客,7.26cookie和session的使用

写一个完整的登录验证功能,要求用cookie和session分别实现一、cookie

1、入口文件:index.php<?php

//  为了简化程序,使用了一个中间层:请求派发器,类似于框架的控制器,对用户的请求进行集中处理

//  1、已登陆:显示出用户的登陆信息,显示退出按钮

if(isset($_COOKIE['username']) && $_COOKIE['username'] ==='admin' ){

echo '欢迎:' . $_COOKIE['username'] . '
';

echo '退出';

}else{

//  2、未登陆,就跳转到登陆页面

echo '请登陆';

}

972b4e0c06daed9db99b3d381242dd3c.png

2、请求派发器:前端控制器 dispatch.php<?php

//  请求派发器:前端控制器

//  功能就是获取到用户的请求,并调用不同的脚本进行处理和响应

//  连接数据库

require __DIR__ . '/inc/connect.php';

//  获取请求参数

$action = isset($_GET['action']) ? $_GET['action'] : 'login';

//  trim() 函数移除字符串两侧的空白字符或其他预定义字符

//  strtolower()函数把字符串转换为小写,strtoupper()把字符串转换为大写

//  htmlentities()函数把字符转换为 HTML 实体 / html_entity_decode()函数把HTML实体转换回字符

$action = htmlentities(strtolower(trim($action)));

//  请求分发

switch ($action){

//  1、登陆

case 'login':

include __DIR__ . '/login.php';

break;

//  2、验证登陆

case 'check':

include __DIR__ . '/check.php';

break;

//  3、退出登陆

case 'logout':

include __DIR__ . '/logout.php';

break;

//  4、默认操作:

//header('Locatioin:index.php');

echo '';

}

3、登陆:login.php<?php

//  防止用户重复登陆

if(isset($_COOKIE['username']) && $_COOKIE['username'] === 'admin' ){

echo '';

}

?>

html>

content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

用户登陆

用户登陆

邮箱:

密码:

提交

function isEmpty() {

var email= document.getElementById('email').value;

var password = document.getElementById('password').value;

if(email.length === 0 || password.length === 0){

alert("邮箱和密码不能为空!");

return false;

}

}

5c4a97e2e87e7220d3bc3125c0f457fd.png

4、验证页面:check.php<?php

//  1、判断用户的请求类型是否正确

if($_SERVER['REQUEST_METHOD'] === 'POST'){

//  2、获取表单数据

$email = $_POST['email'];

$password = sha1($_POST['password']);

//  3、用户信息验证

$sql = 'SELECT * FROM `user` WHERE `email` = :email AND `password` = :password LIMIT 1';

$stmt =$pdo->prepare($sql);

$stmt->execute(['email'=>$email, 'password'=>$password]);

$user = $stmt->fetch(PDO::FETCH_ASSOC);

//  4、判断验证的结果

if( false === $user){

//  验证失败,返回上一页面

echo '';

die;

}

//  验证成功

//  将用户的信息写到cookie中

setcookie('username', $user['username']);

echo '';

}else{

die('请求类型错误!');

}

验证通过,跳转到首页

030f01a987a337625a43ae2a7c61bdd9.png

5、退出页面:logout.php<?php

//  必须在用户已经登陆的情况下再退出

if(isset($_COOKIE['username']) && $_COOKIE['username'] === 'admin'){

setcookie('username', null, time()-3600);

echo '';

}else{

//  要求用户先登陆

echo '';

}

退出后跳转到首页

5aa70b52025f58c06268daeba90792fb.png

二、session:

1、index.hp<?php

session_start();

//  为了简化程序,使用了一个中间层:请求派发器,类似于框架的控制器,对用户的请求进行集中处理

//  1、已登陆:显示出用户的登陆信息,显示退出按钮

if(isset($_SESSION['username']) && $_SESSION['username'] ==='admin' ){

echo '欢迎:' . $_SESSION['username'] . '
';

echo '退出';

}else{

//  2、未登陆,就跳转到登陆页面

echo '请登陆';

}

2、请求派发器:前端控制器 dispatch.php<?php

//  请求派发器:前端控制器

//  功能就是获取到用户的请求,并调用不同的脚本进行处理和响应

//  连接数据库

require __DIR__ . '/inc/connect.php';

//  获取请求参数

$action = isset($_GET['action']) ? $_GET['action'] : 'login';

//  trim() 函数移除字符串两侧的空白字符或其他预定义字符

//  strtolower()函数把字符串转换为小写,strtoupper()把字符串转换为大写

//  htmlentities()函数把字符转换为 HTML 实体 / html_entity_decode()函数把HTML实体转换回字符

$action = htmlentities(strtolower(trim($action)));

//  请求分发

switch ($action){

//  1、登陆

case 'login':

include __DIR__ . '/login.php';

break;

//  2、验证登陆

case 'check':

include __DIR__ . '/check.php';

break;

//  3、退出登陆

case 'logout':

include __DIR__ . '/logout.php';

break;

//  4、默认操作:

//header('Locatioin:index.php');

echo '';

}

3、login.php<?php

//  防止用户重复登陆

if(isset($_SESSION['username']) && $_SESSION['username'] === 'admin' ){

echo '';

}

?>

html>

content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

用户登陆

用户登陆

邮箱:

密码:

提交

function isEmpty() {

var email= document.getElementById('email').value;

var password = document.getElementById('password').value;

if(email.length === 0 || password.length === 0){

alert("邮箱和密码不能为空!");

return false;

}

}

4、验证:check.php<?php

//  session_start()函数必须位于标签之前, 启动会话

session_start();

//  1、判断用户的请求类型是否正确

if($_SERVER['REQUEST_METHOD'] === 'POST'){

//  2、获取表单数据

$email = $_POST['email'];

$password = sha1($_POST['password']);

//  3、用户信息验证

$sql = 'SELECT * FROM `user` WHERE `email` = :email AND `password` = :password LIMIT 1';

$stmt =$pdo->prepare($sql);

$stmt->execute(['email'=>$email, 'password'=>$password]);

$user = $stmt->fetch(PDO::FETCH_ASSOC);

//  4、判断验证的结果

if( false === $user){

//  验证失败,返回上一页面

echo '';

die;

}

//  验证成功

//  将用户的信息写到cookie中

//  setcookie('username', $user['username']);

//  将用户登录信息写到session中

$_SESSION['username'] = $user['username'];

echo '';

}else{

die('请求类型错误!');

}

5、退出:logout.php<?php

session_start();

//  必须在用户已经登陆的情况下再退出

if(isset($_SESSION['username']) && $_SESSION['username'] === 'admin'){

//setcookie('username', null, time()-3600);

// 销毁 session

// session_destroy() 将重置 session,您将失去所有已存储的 session 数据。

// unset() 函数用于释放指定的 session 变量

session_unset();

//session_destroy();

setcookie('PHPSESSID', null, time()-3600);

echo $_COOKIE['PHPSESSID'];

echo '';

}else{

//  要求用户先登陆

echo '';

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值