在介紹表單處理時,本來也想順便提及登出機制的部分,礙於篇幅過長,藉由獨立篇幅的方式來介紹登出機制。
實作內容延續表單處理使用的表單網頁 formaction.html 和接收資料的 form.php。
登出設計介紹
大家在登入一個網站隔了一段時間後,仍然能維持登入狀態無須重新驗證,其實靠的就是session 和 cookie。
第一步: 開啟記憶功能
<?PHP
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$account = htmlspecialchars($_POST['account']);
$password = htmlspecialchars($_POST['pw']);
if($password == "1234"){
echo "welcome".$_POST['account'];
}
else{
echo "password is error";
}
}
?>
第二步:設定登出連結位置
<?PHP
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$account = htmlspecialchars($_POST['account']);
$password = htmlspecialchars($_POST['pw']);
if($password == "1234"){
echo "welcome".$_POST['account'];
}
else{
echo "password is error";
}
}
?>
<a href="?action=logout">Log Out (登出)
</a>
第三步:LOGOUT LOGIC (登出機制)
確認使用者點擊登出時傳送過來的參數是否存在以及參數值是不是 logout
如果是則清除所有 session,並且跳轉回原始登入網頁。
<?PHP
session_start();
if (isset($_GET['action']) && $_GET['action'] == 'logout') {
session_destroy();
header("Location: formaction.html");
exit;
}
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$account = htmlspecialchars($_POST['account']);
$password = htmlspecialchars($_POST['pw']);
if($password == "1234"){
$_SESSION['account'] = $account;
echo "welcome".$_SESSION['account'];
}
else{
echo "password is error";
}
}
?>
<a href="?action=logout">Log Out (登出)
</a>
header()
header() 函式用於向客户端發送原始的 HTTP 標頭,常用於頁面跳轉、設定頁面編碼以及文件下載等等,須注意的是 header() 之前不能使用 echo() 或 print(),否則會出現錯誤,以下是常見 header() 常見用法:
頁面跳轉(也可以搭配參數)
header("Location: http://example.com");
header('Refresh: 10; url=http://www.example.com');//延遲跳轉
設定頁面編碼
header("Content-Type: text/html; charset=utf-8")
文件下載
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="' . basename($file) . '"');
header('Content-Length: ' . filesize($file));
exit;
內容類型
header("Content-Type: application/json");
設置http狀態碼
header("HTTP/1.1 404 Not Found");
URL特殊符號
URL 只能使用英文字母、阿拉伯數字和某些標點符號,不能使用其他文字和符號,編碼格式採用的是 ASCII CODE,而不是 Unicode,也就是說 URL 中不能包含任何非 ASCII字符(例如空格),另外有些字元在網址內則具有特殊意義。以下是常見特殊符號的含義:
+ : 空格
/ : 分隔目錄與子目錄
? : 分隔url與參數
% : 指定特殊字符
# : 表示書籤
& : 參數間的分隔符
= : 指定參數值
本篇文章到這裡就結束了,如果喜歡我的文章或覺得有用的話,歡迎動動手指點擊愛心,你/妳的支持是我最大的動力,我們下篇文章見🙌。



















