So erreichen Sie sieben Tage ohne Anmeldung in PHP

藏色散人
Freigeben: 2023-03-17 09:16:02
Original
1782 Leute haben es durchsucht

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.

So erreichen Sie sieben Tage ohne Anmeldung in PHP

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(&#39;content-type:text/html;charset=utf-8&#39;);
require &#39;./config.php&#39;;
$username = $_POST[&#39;uname&#39;];
$password = md5($_POST[&#39;pwd&#39;]);
$islogin = $_POST[&#39;islogin&#39;];
$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[&#39;username&#39;],strtotime(&#39;+7 days&#39;));
        $token = settoken($res[&#39;username&#39;],$res[&#39;password&#39;],$res[&#39;id&#39;]);
        setcookie("token",$token,strtotime(&#39;+7 days&#39;));
    }else{
        // 无记住密码
        setcookie("username",$res[&#39;username&#39;]);
        $token = settoken($res[&#39;username&#39;],$res[&#39;password&#39;],$res[&#39;id&#39;]);
        setcookie("token",$token);
    }
    exit("
        <script>
            alert(&#39;登录成功!&#39;);
            location.href =&#39;index.php&#39;;
        </script>
    ");
}else{
    //验证失败
    exit("
        <script>
            alert(&#39;用户名或密码有误!&#39;);
            location.href =&#39;login.php&#39;;
        </script>
    ");
}
//清除cookie
function clearCookie(){
    setcookie("username",&#39;&#39;,time()-1800);
    setcookie("token",&#39;&#39;,time()-1800);
}
//设置token
function settoken($username,$password,$id)
{
    $salk = "czx";
    $token = md5($salk.$username.$password)."*".$id;
    return $token;
}
Nach dem Login kopieren

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(&#39;DB_CHARSET&#39;, &#39;utf8&#39;);
//数据库端口号
define(&#39;DB_PORT&#39;, &#39;3306&#39;);
//定义PDO的DSN,数据源名,包括主机名,端口号和数据库名称。
define(&#39;DSN&#39;, 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();
}
Nach dem Login kopieren

5. Homepage-Datei : index.php

<?php
    if($_GET[&#39;act&#39;] == &#39;out&#39;){
        setcookie("username",&#39;&#39;,time()-1800);
        setcookie("token",&#39;&#39;,time()-1800);
    }
    $token = $_COOKIE[&#39;token&#39;];
    $username = $_COOKIE[&#39;username&#39;];
    if(!empty($username) &&!empty($token)&& ($_GET[&#39;act&#39;] != &#39;out&#39;)){
        exit("
            <script>
                alert(&#39;用户已登录,请直接访问!&#39;);
                location.href =&#39;index.php&#39;;
            </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>
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage