亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php如何實現七天免登錄

發布時間:2022-10-25 11:52:09 來源:億速云 閱讀:154 作者:iii 欄目:編程語言

本篇內容介紹了“php如何實現七天免登錄”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

php實現七天免登錄的方法:1、在前端創建一個用戶選擇七天免登錄的按鈕;2、在后端中,根據用戶提交的用戶名和密碼查詢到用戶的id;3、將用戶id存入cooike中;4、設置七天的過期時間即可。

php 怎么實現七天免登錄?

php中實現7天免登錄功能,防止cookie欺騙

1、免登錄思路

用戶選擇七天免登錄按鈕,后端根據用戶提交的用戶名和密碼查詢到用戶的id將用戶id存入cooike中并設置七天的過期時間。在不清除cookie信息(非正常退出的時候),后臺幫助用戶登錄。實際就是利用cooki實現。

2、驗證登錄文件: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、數據庫配置文件: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>密&nbsp;&nbsp;&nbsp;碼:</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%;
      /* font-size: 2rem; */
    }
    li {
        list-style-type: none;
        color: darkgray;
    }
    span {
        color: darkgray;
        font-size: 1.5rem;
        margin-right: 15px;
        color:burlywood
    }
    .top {
      /* width: 960px; */
      background-color: linen;
      display: flex;
      flex-flow: row nowrap;
      justify-content: space-between;
    }
    .top > div {
      margin: 10px 40px;
    }
    .column {
      /* width: 960px; */
      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如何實現七天免登錄”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

五常市| 工布江达县| 林西县| 钟祥市| 红原县| 潼南县| 和静县| 宁武县| 庆阳市| 延津县| 拉孜县| 宣恩县| 道孚县| 平果县| 浦江县| 丹棱县| 儋州市| 广元市| 营山县| 筠连县| 三门峡市| 谢通门县| 顺义区| 衡阳县| 浦北县| 灵台县| 申扎县| 利津县| 吉林省| 金寨县| 新民市| 温宿县| 宁都县| 兴海县| 靖宇县| 杭州市| 盐津县| 苏尼特左旗| 七台河市| 吴忠市| 井研县|