Heim >Backend-Entwicklung >PHP-Problem >So erreichen Sie sieben Tage ohne Anmeldung in PHP
So implementieren Sie die siebentägige Anmeldung ohne Anmeldung in PHP: 1. Erstellen Sie im Frontend eine Schaltfläche, über die der Benutzer die siebentägige Anmeldung ohne Anmeldung auswählen kann. 2. Fragen Sie im Backend die ID des Benutzers ab den vom Benutzer übermittelten Benutzernamen und das Passwort; 3. Speichern Sie die Benutzer-ID. Geben Sie das Cookie ein. 4. Legen Sie die Ablaufzeit von sieben Tagen fest.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 8.1, Dell G3-Computer.
php Wie erreiche ich sieben Tage ohne Anmeldung?
Implementieren Sie die 7-Tage-Login-freie Funktion in PHP, um Cookie-Spoofing zu verhindern
1. Login-freie Idee
Der Benutzer wählt die 7-Tage-Login-freie Schaltfläche aus und das Backend fragt die ID des Benutzers ab auf dem vom Benutzer übermittelten Benutzernamen und Passwort. Speichern Sie diese im Cookie und legen Sie eine Ablaufzeit von sieben Tagen fest. Wenn die Cookie-Informationen nicht gelöscht werden (beim abnormalen Beenden), hilft der Hintergrund den Benutzern bei der Anmeldung. Es wird tatsächlich mithilfe von Cookies implementiert.
2. Verifizierungs-Login-Datei: 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. Datenbank-Konfigurationsdatei: 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(); }
5. Homepage-Datei : 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>
Empfohlenes Lernen: „PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonSo erreichen Sie sieben Tage ohne Anmeldung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!