:::

9. 身份認證機制

一、 請先建立資料表

  1. 請建立一個eznews_users的資料表後,直接新增幾筆帳號密碼資料,其中passwd請用md5()加密

二、 建立登入機制

  1. 在樣板中建立 [var.login]
  2. 在config.php中建立$login變數,其內容為登入表單。表單以post送至index.php
    <div class='row' style='margin:10px;'>
      <form action='index.php' method='post' class='form-horizontal' role='form'>
        <div class='form-group'>
          <label class='col-md-4 control-label'>帳號</label>
          <div class='col-md-8'><input type='text' name='uname' class='form-control'></div>
        </div>
        <div class='form-group'>
          <label class='col-md-4 control-label'>密碼</label>
          <div class='col-md-8'><input type='password' name='passwd' class='form-control'></div>
        </div>
        <input type='hidden' name='op' value='login'>
        <button type='submit' class='btn btn-success pull-right'>登入</button>
      </form>
    </div>
  3. index.php加入一組login流程,並建立對應login的函數。
  4. login的函數利用uname和passwd去eznews_users撈取uid資料
  5. 若有uid資料,就將uname及uid紀錄到session中,如:$_SESSION['uid'],並視為已登入。
  6. 修改config.php中的$login變數,判斷若有$_SESSION['uid']存在,則秀出登入者姓名,反之,才嗅出登入表單。

三、 建立登出機制

  1. 登出只要將uname及uid的session紀錄清除即可
  2. 修改config.php中的$login變數,在登入者姓名後加入登出按鈕,利用get方式傳遞op=logout至index.php即可。
  3. index.php加入一組logout流程,並建立對應logout的函數。
  4. logout的函數利用unset()清除uname和passwd的session即為登出

四、 檢視所有需要有權限才能執行的功能

  1. 先處裡刪除、修改、新增等幾個函數,沒有登入即跳出不執行。編輯表單則是傳回「請先登入」之類的字樣。
    if(!isset($_SESSION['uid']) or empty($_SESSION['uid'])){
       return;
    }
  2. 接著處理未登入就不該看見的按鈕,例如:編輯、修改或發布新聞
  3. 最後拿掉當初發布新聞時,表單中的密碼輸入欄位,因為已經沒有必要。相關的判斷或session也應該要拿掉。此外表單也可以重新排列一下,使相關欄位能盡量大一點。

五、 如果希望新聞只有發布者能修改或刪除

  1. 必須要新聞的表加一個uid欄位,並且先把空的uid都適當的uid編號(例如1)
    update eznews set uid=1
  2. 表單的姓名欄位也可以拿掉(或自動產生姓名預設值),改為隱藏的uid及uname欄位(對應author)即可。對應的儲存動作也要修改,以便把uid存進去。
  3. 調整刪除及儲存的函數,條件加入uid='{$uid}' 以便確定只有本人才能改
  4. 相關編輯或刪除按鈕加上判斷條件,當登入者uid和該文的uid一致時才出現。
  5. 最後去新增幾個帳號測試看看是否和想像的一致即可。

六、 完整程式範例

www.zip


:::

搜尋

QR Code 區塊

https%3A%2F%2Fwww.tad0616.net%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbsn%3D34%26tbdsn%3D1108

書籍目錄

展開 | 闔起

線上使用者

37人線上 (10人在瀏覽線上書籍)

會員: 0

訪客: 37

更多…