PHP菜鳥關于本課程一點點思考心得,大牛輕噴!——關于登錄驗證時,一些小小的bug。
老師講的很好,由淺及深,很容易理解。
但是仔細看了代碼,發現了一點小小的問題,當然,視頻我還沒有全部看完,不知道后面的有沒有講解到該問題。如果有講到,就忽略本帖。
首先我把下載到的源碼部署在自己機器上,仔細看了看老師的代碼,然后直接在瀏覽器中輸入http://localhost/shopImooc/admin/listAdmin.php,在不登陸的情況之下,會直接出現管理員列表頁面。然后點擊添加或修改管理員,就會直接進入添加或者修改管理員頁面。
在表單中輸入相關信息提交之后,會顯示請先登陸,并跳轉到登陸界面,但是打開數據庫后,發現數據庫中的數據已經被修改或者添加數據。
再看代碼,發現老師的的登陸驗證工作大部分都是交給doAdminAction.php中checklogined()方法完成。所以我的做法(可能不正確,但是經過測試沒有發現問題。)是將checklogined()方法改為:
if(empty($_SESSION['adminId'])&&empty($_COOKIE['adminId'])){ ????alertMes("請先登陸","login.php"); ????exit; }
在沒有登陸的情況下,跳回到登陸頁面,并終止腳本執行,防止跳轉頁面之后執行后面的代碼,導致數據被篡改。
這樣做了之后發現仍然有一些操作,比如listAdmin.php等讀操作,是沒有經過doAdminAction.php中checklogined()方法的登錄驗證的。這樣,在不登陸的情況下仍然可以查看給頁面信息。
所以也想請教一下老師,有沒有更好的方法對請求進來的url進行集中過濾或管理?或者有第二期視頻的話,在第二期課程中給予講解。
2015-02-06
嗯 這應該是寫exit退出即可
像listAdmin.php中也需要檢測是否登陸,你加上checkLogined()即可
^-^...