Maison > Article > développement back-end > Comment obtenir sept jours sans connexion en php
Comment implémenter une connexion sans connexion de sept jours en PHP : 1. Créez un bouton sur le front-end pour que les utilisateurs puissent choisir une connexion sans connexion de sept jours 2. Dans le back-end, interrogez l'identifiant de l'utilisateur en fonction de l'identifiant ; nom d'utilisateur et mot de passe soumis par l'utilisateur ; 3. Enregistrez l'identifiant de l'utilisateur. Entrez le cookie 4. Définissez le délai d'expiration de sept jours.
L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 8.1, ordinateur Dell G3.
Comment éviter de se connecter pendant sept jours en php ?
Implémentez la fonction de connexion sans connexion pendant 7 jours en php pour empêcher l'usurpation d'identité des cookies
1 Idée sans connexion
L'utilisateur sélectionne le bouton sans connexion pendant 7 jours et le backend interroge l'identifiant de l'utilisateur en fonction. sur le nom d'utilisateur et le mot de passe soumis par l'utilisateur. Stockez-les dans le cookie et définissez un délai d'expiration de sept jours. Lorsque les informations des cookies ne sont pas effacées (lors d'une sortie anormale), l'arrière-plan aide les utilisateurs à se connecter. Il est effectivement mis en œuvre à l'aide de cookies.
2. Fichier de connexion de vérification : checkLogin.php
<?php header('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> "); } //清除cookie function clearCookie(){ setcookie("username",'',time()-1800); setcookie("token",'',time()-1800); } //设置token function settoken($username,$password,$id) { $salk = "czx"; $token = md5($salk.$username.$password)."*".$id; return $token; }
3. Fichier de configuration de la base de données : 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. : index.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; } h3 { text-align: center; } .contater > .submit >input{ margin: 15px 140px; font-size: 1.5rem; } </style> <body> <h3 >登录</h3> <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>
Apprentissage recommandé : "Tutoriel vidéo PHP"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!