透過 Cookie 儲存使用者識別資訊,下次造訪自動驗證並登入,免去重複輸入帳密。本範例示範前端表單、後端驗證與 Cookie 讀寫流程。
<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>
<?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>";
}
}
}
?>
data[0](時間)、data[1](計數)、data[2](帳號),有效期 24 小時(86400 秒)。user_id, token, expirytoken,驗證時查資料表比對並檢查過期HttpOnly、Secure(HTTPS)、SameSite=Lax/Strict 旗標