線上書籍

Home

[1032]PHP入門

一、 請先建立資料表
  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