:::

8-3 註冊哪有這麼簡單!

做到這邊很高興終於能新增使用者了,以為以後高枕無憂了?還早的呢...

  1. 萬一重複註冊怎麼辦?
  2. Email亂填怎麼辦?
  3. 部份欄位沒填怎麼辦?
  4. 密碼會被管理員看到!

所以,要注意的東西多著呢!我們一個一個來處理。

一、避免重複註冊

  1. 這個最簡單,從資料表結構下手即可。
  2. 只要將 email 設定成唯一欄位即可。
  3. 故意重複一下Email格式試試會有什麼結果吧!

二、檢查Email格式

  1. 若是想檢查 Email 是否有效,最好的方法當然是寄個啟動信到該信箱,讓使用者點擊後才正式啟用(等有空再來做)。
  2. 在這裡,我們先就「形狀」或者說「Email格式」來做檢查即可,利用之前學到的filter_var來處理即可。若格式正確,會傳回Email,若不正確,會傳回false。
    $email = $db->real_escape_string($_POST['email']);
    $email = filter_var($email, FILTER_VALIDATE_EMAIL);
    if (!$email) {
        die("不合法的Email");
    }

三、檢查必填欄位

  1. 其實上述的Email和此處的必填欄位都可以在前端做檢查,但實際上,前端的檢查是可以有技巧的跳過,因此,後端的檢查還是必要的。
  2. 用簡單的 empty() 函數就可以判斷是否為空值了。或者用 if($變數=="")也可以。
    $name = $db->real_escape_string($_POST['name']);
    if (empty($name)) {
        die("姓名為必填!");
    }
    $email = $db->real_escape_string($_POST['email']);
    if (empty($email)) {
        die("Eamil為必填!");
    }
    $email = filter_var($email, FILTER_VALIDATE_EMAIL);
    if (!$email) {
        die("不合法的Email");
    }
    $pass = $db->real_escape_string($_POST['pass']);
    if (empty($pass)) {
        die("密碼為必填!");
    }

四、密碼加密

  1. 目前最佳的密碼加密方法: password_hash()
  2. 不可逆!同一個密碼加密後的值會不一樣!
  3. 可利用 password_verify($password, $hash) 來解密!
    $pass = $db->real_escape_string($_POST['pass']);
    if (empty($pass)) {
        die("密碼為必填!");
    }
    $pass  = password_hash($pass, PASSWORD_DEFAULT);

五、練習

  1. 想想看,可以乾脆把 Email 設成主索引嗎?優缺點為何?
  2. 請匯出最新的資料庫結構檔並儲存。
  3. 清空(非刪除)資料表,並重新註冊正式會員

:::

書籍目錄

展開 | 闔起

快速登入


http%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbdsn%3D723%26tbsn%3D27

計數器

今天: 2417241724172417
昨天: 4159415941594159
總計: 8069935806993580699358069935806993580699358069935