首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 利用 Cookie 實作自動登入(記住我)功能完整範例

     編輯:PHP 相關知識

PHP 利用 Cookie 實作自動登入功能

透過 Cookie 儲存使用者識別資訊,下次造訪自動驗證並登入,免去重複輸入帳密。本範例示範前端表單、後端驗證與 Cookie 讀寫流程。

前端登入表單(HTML)

<form name="form1" method="post" action="cookiebasedpasswordlogin.php">
  <table>
    <tr><td colspan="2"><b>請輸入密碼</b></td></tr>
    <tr><td>帳號</td><td><input type="text" name="username"></td></tr>
    <tr><td>密碼</td><td><input type="password" name="password"></td></tr>
    <tr><td colspan="2"><center><input type="submit" name="submit" value="登入"></center></td></tr>
  </table>
</form>

後端邏輯(cookiebasedpasswordlogin.php)

<?php
$now = getdate();
$storetime = "$now[weekday] $now[month] $now[year] time: " .
             sprintf("%02d:%02d:%02d", $now['hours'], $now['minutes'], $now['seconds']);

if (isset($data)) { // 已有 Cookie,自動登入成功
    $counter = ++$data[1];
    setcookie("data[0]", $storetime, time() + 86400);
    setcookie("data[1]", $counter, time() + 86400);
    setcookie("data[2]", $username, time() + 86400);
    echo "<b><center>Hi $data[2]!</center></b><br>";
    echo "<b><center>上次登入: $data[0]</center></b><br>";
    echo "<b><center>本次時間: $storetime</center></b><br>";
    echo "<b><center>瀏覽次數: $data[1]</center></b><br>";
    echo "<b><center>自動登入成功!未來 24 小時免輸入密碼</center></b>";
} else {
    if (isset($username) && isset($password)) {
        if ($password === 'superpass') { // 簡易驗證,實務應查資料庫雜湊比對
            $counter = 0;
            setcookie("data[0]", $storetime, time() + 86400);
            setcookie("data[1]", $counter, time() + 86400);
            setcookie("data[2]", $username, time() + 86400);
            header("Location: cookieimp.php"); // 導向會員頁
        } else {
            echo "<h1><center>密碼錯誤!</center></h1>";
        }
    }
}
?>

關鍵點與安全建議

  • Cookie 存放 data[0](時間)、data[1](計數)、data[2](帳號),有效期 24 小時(86400 秒)。
  • 實務專案切勿明文儲存密碼於 Cookie,應採用:
    ① 登入成功產生隨機 Token,資料表記錄 user_id, token, expiry
    ② Cookie 僅存 token,驗證時查資料表比對並檢查過期
    ③ 設定 HttpOnly、Secure(HTTPS)、SameSite=Lax/Strict 旗標
  • 本範例為教學示範核心流程,生產環境請務必強化安全性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved