本篇内容介绍了“PHP如何实现七天免登录”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php实现七天免登录的方法:1、在前端创建一个用户选择
本篇内容介绍了“PHP如何实现七天免登录”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
php实现七天免登录的方法:1、在前端创建一个用户选择七天免登录的按钮;2、在后端中,根据用户提交的用户名和密码查询到用户的id;3、将用户id存入cooike中;4、设置七天的过期时间即可。
php 怎么实现七天免登录?
php中实现7天免登录功能,防止cookie欺骗
1、免登录思路
用户选择七天免登录按钮,后端根据用户提交的用户名和密码查询到用户的id将用户id存入cooike中并设置七天的过期时间。在不清除cookie信息(非正常退出的时候),后台帮助用户登录。实际就是利用cooki实现。
2、验证登录文件:checkLogin.php
<?phpheader('content-type:text/html;charset=utf-8');require './config.php';$username = $_POST['uname'];$passWord = md5($_POST['pwd']);$islogin = $_POST['islogin'];$sql = "SELECT * FROM `mu_user` WHERE `username`=? AND `password`=? ";$stm = $pdo -> prepare($sql);$stm ->bindParam(1,$username);$stm ->bindParam(2,$password);$stm ->execute();$res = $stm->fetch(PDO::FETCH_ASSOC);if($stm->rowCount() == 1){ //验证成功 clearCookie(); if($islogin==1){ //记住密码 setcookie("username",$res['username'],strtotime('+7 days')); $token = settoken($res['username'],$res['password'],$res['id']); setcookie("token",$token,strtotime('+7 days')); }else{ // 无记住密码 setcookie("username",$res['username']); $token = settoken($res['username'],$res['password'],$res['id']); setcookie("token",$token); } exit(" <script> alert('登录成功!'); location.href ='index.php'; </script> ");}else{ //验证失败 exit(" <script> alert('用户名或密码有误!'); location.href ='login.php'; </script> ");}//清除cookiefunction clearCookie(){ setcookie("username",'',time()-1800); setcookie("token",'',time()-1800);}//设置tokenfunction settoken($username,$password,$id){ $salk = "czx"; $token = md5($salk.$username.$password)."*".$id; return $token;}
3、数据库配置文件:config.php
<?php//主机地址define("DB_HOST","localhost");//数据库用户名define("DB_USER","root");//数据库密码define("DB_PASSWORD","root123");// 数据库型号define("DB_TYPE","mysql");// 数据库名称define("DB_NAME","my_user");//数据库编码define('DB_CHARSET', 'utf8');//数据库端口号define('DB_PORT', '3306');//定义PDO的DSN,数据源名,包括主机名,端口号和数据库名称。define('DSN', DB_TYPE.":host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET);try{ //连接数据款 $pdo = new PDO(DSN,DB_USER,DB_PASSWORD);} catch(PDOException $e){ //捕捉特定于数据库信息的PDOEXCEPTION 异常 echo $e->getMessage();} catch(Throwable $e){ //捕捉拥有Throwable接口的错误或者其他异常 echo $e->getMessage();}
4、登录页面文件 : login.php
<?php if($_GET['act'] == 'out'){ setcookie("username",'',time()-1800); setcookie("token",'',time()-1800); } $token = $_COOKIE['token']; $username = $_COOKIE['username']; if(!empty($username) &&!empty($token)&& ($_GET['act'] != 'out')){ exit(" <script> alert('用户已登录,请直接访问!'); location.href ='index.php'; </script> "); }?><!DOCTYPE html><html><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>登录</title></head><style> *{ margin: 0px; padding: 0; } .contater { border: 1px solid #000; width: 300px; display: flex; flex-direction: column; margin: auto; } .contater>div { margin-top: 20px; } h4 { text-align: center; } .contater > .submit >input{ margin: 15px 140px; font-size: 1.5rem; }</style><body><h4 >登录</h4> <fORM action="checkLogin.php" method="post"> <div> <div> <span>用户名:</span> <input type="text" name="uname"> </div> <div> <span>密 码:</span> <input type="password" name="pwd"> </div> <div> <input type="radio"" name="islogin" value="1"> <span>记住密码</span> </div> <div> <input type="submit" value="登录"> </div> </div> </form></body></html>
5、首页文件:index.php
<?php $token = $_COOKIE['token']; $token_arr = explode("*",$token); $uid = end($token_arr);//获取用户id require "./config.php"; $sql = "SELECT * FROM `mu_user` WHERE `id`=?"; $stm = $pdo ->prepare($sql); $stm ->bindParam(1,$uid); $stm ->execute(); $result =$stm->fetch(PDO::FETCH_ASSOC); if($stm->rowCount()==1){ $salk = "czx"; $token_res = md5($salk.$result['username'].$result['password']); if($token_res != $token_arr[0]){ exit(" <script> alert('请先登录'); loction.href ='login.php'; </script> "); } }else{ exit(" <script> alert('请您先登录'); location.href='login.php'; </script> "); }?><!DOCTYPE html><html> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>首页</title> </head> <style> * { margin: 0px; padding: 0px; box-sizing: border-box; } h2 { text-align: center; } a { text-decoration: none; font-size: 1.5rem; color: darkgray; } a:hover { background-color: lightskyblue; border-radius: 5%; } li { list-style-type: none; color: darkgray; } span { color: darkgray; font-size: 1.5rem; margin-right: 15px; color:burlywood } .top { background-color: linen; display: flex; flex-flow: row nowrap; justify-content: space-between; } .top > div { margin: 10px 40px; } .column { display: flex; flex-flow: row nowrap; justify-content: space-around; } .column > li { margin-right: 65px; padding: 0px 20px; } </style> <body> <h2>陶转转首页</h2> <div> <div> <ul> <li><a href="">LOGo</a></li> <li><a href="">首页</a></li> <li><a href="">分类一</a></li> </ul> </div> <div> <span>欢迎您,<?php echo $result['username'];?></span> <a href="./login.php?act=out">退出</a> </div> </div> </body></html
“php如何实现七天免登录”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!
--结束END--
本文标题: php如何实现七天免登录
本文链接: https://lsjlt.com/news/344436.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0