Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mencapai tujuh hari tanpa log masuk dalam php

Bagaimana untuk mencapai tujuh hari tanpa log masuk dalam php

藏色散人
藏色散人asal
2022-10-25 11:13:281776semak imbas

Cara melaksanakan tujuh hari tanpa log masuk dalam PHP: 1. Buat butang di bahagian hadapan untuk pengguna memilih tanpa log masuk tujuh hari 2. Di bahagian belakang, tanya ID pengguna berdasarkan nama pengguna dan kata laluan yang dihantar oleh pengguna 3. Simpan ID pengguna dalam cooike 4. Tetapkan masa tamat tempoh tujuh hari;

Bagaimana untuk mencapai tujuh hari tanpa log masuk dalam php

Persekitaran pengendalian tutorial ini: sistem Windows 7, PHP versi 8.1, komputer Dell G3.

Bagaimana untuk mengelakkan log masuk selama tujuh hari dalam php?

Laksanakan fungsi 7 hari tanpa log masuk dalam php untuk mengelakkan penipuan kuki

1. Idea tanpa log masuk

Pengguna memilih butang 7 hari tanpa log masuk , bahagian belakang menanyakan ID pengguna berdasarkan nama pengguna dan kata laluan yang diserahkan oleh pengguna, menyimpan ID pengguna dalam cooike dan menetapkan masa tamat tempoh tujuh hari. Apabila maklumat kuki tidak dikosongkan (apabila keluar secara tidak normal), latar belakang membantu pengguna log masuk. Ia sebenarnya dilaksanakan menggunakan kuki.

2. Sahkan fail log masuk: 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;
}

3 >

4. Fail halaman log masuk: log masuk.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();
}

5 🎜 >Pembelajaran yang disyorkan: "
<?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>
Tutorial Video PHP

"

Atas ialah kandungan terperinci Bagaimana untuk mencapai tujuh hari tanpa log masuk dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn