[PHP]利用cookie儲存使用者資料

設計一個能將使用者帳號密碼存在 Cookie中的網頁


這算是典型的cookie使用時機,當使用者登入過網頁後
一定時間內不需要使用者重新登入,每次使用網站都可以直接進入使用者頁面


需求說明

表單頁:input.html
登入頁:login.php

  1. 登入成功則將使用者帳號密碼存在cookie中,讓cookie 存活40秒

  2. 關掉瀏覽器後直接再打開login.php則仍然算登 入成功

  3. 40 秒過後則顯示登入已失效


前端網頁不多做說明已經做了很多遍了,就是兩個input一個submit的組合
直接說後端程式
$db_id = 'allen';
$db_pwd = '1234';
$id = $_POST['id'];
$pwd = $_POST['pwd'];

if(($_POST['id']==$db_id) && ($_POST['pwd']== $db_pwd)){
setcookie('id',$_POST['id'],date('U')+40);
setcookie('pwd',$_POST['pwd'],date('U')+40);
echo "歡迎登入:".$_POST['id']."
"."這是主頁內容";
}elseif(($_COOKIE['id']==$db_id) && ($_COOKIE['pwd']==$db_pwd)){
echo $_COOKIE['id']." 歡迎回來
這是主頁內容";
}else{
echo "您尚未登入
回上頁";
}

一開始我們先預設資料庫的一組資料,和定義接收到的資料
用if判斷,若是輸入的帳號和密碼符合資料庫內容,就設定cookie
並且顯示網頁內容

若不符合上面的條件
判斷cookie內容是否和資料庫一樣,是則也顯示網頁內容
若cookie不存在,理所當然的也就不符合了,就不會顯示

最後,因為使用者沒輸入值,而且cookie裡的直也不符合
當然就是尚未登入的狀況,就不顯示網頁內容

值得注意的是,之後重新刷新後端網頁的時候會出現兩個
Undefined index:

分別是帳號和密碼的變數,因為這邊後端並沒有收到資料
這個錯誤是正常的,至於處理方式之後補充,我拿去問老師XD

2016/12/11
結果當初寫信問了老師,老師說他晚點回覆就沒回覆了...
後來意外的找到解決的方法,就是在會回報錯誤的地方前面加入「@」
如此不讓PHP回報錯誤就解決了!更狠一點是直接調整php.ini所有警告都不回報
參考來源:網站設計筆記 、 藏經閣

這次的練習結果一樣放在 github 上,檔名是input.html和login.php

留言