登入系統是懂得操作資料庫之後,
再瞭解一下對session如何操作之後
就應該懂得如何做出來的系統
本系統,與之前在《【ASP】串連Access資料庫的登陸系統》(點擊開啟連結)一文中的asp登入系統的思想完全一樣,
只是程式設計語言從asp變成了php,資料庫從Access變成了mysql
一、基本目標
首先在mysql存在著如下的使用者資訊表:
在頁面中有一個登入表單,上面需要使用者填寫使用者名稱與密碼等資訊
如果使用者輸入的使用者名稱在使用者資訊表裡面根本就沒有,那麼則彈出“查無此人”的對話方塊,並返回本頁
如果使用者輸入的密碼錯誤,那麼則彈出“密碼錯誤”的對話方塊,並返回本頁
如果使用者輸入的登入資訊正確,那麼則跳到“登入成功”的頁面,並輸出使用者當前的IP、使用的系統的語言環境、與瀏覽器資訊
“登入成功”的頁面是被保護的,瀏覽器並不可以通過在瀏覽器中輸入地址的方式,繞開輸入密碼的頁面,直接存取“登入成功”頁面
二、基本思想
使用者輸入使用者名稱與密碼的那一頁用靜態頁面,只要其表單指向登入判斷頁login.php就可以了。
welcome.php是使用者成功登入的頁面,
exit.php用來銷毀session。
session就是用來存放使用者名稱與密碼的瀏覽器全域變數。
三、製作過程
(1)login.html
沒什麼好說的,就一個登入表單,見如下代碼:
登入頁面
(2)exit.php
銷毀session頁面,並且在銷毀session之後,把頁面打回login.html
只得注意的是,在php一旦需要使用session,就應該在所有代碼的第一行使用session_start();系統函數,否則可能會出錯
登出頁面
(3)login.php
登入判斷頁面,還是經典的登入三段論,
首先接收login.html傳遞過來的username與password,查詢使用者資訊表中是否有這個username,
如果沒有,再登入失敗,如果有,再同時判斷傳過來的、使用者輸入的password是否等於這個username在資料庫中對應的dbpassword,
如果是,登入成功,並把username存入session,傳遞給登入成功頁面,否則登入失敗。
本頁面還用到了系統內建函數is_null判斷查詢結果是否為空白,
如果資料庫查詢結果為空白,根本就不會有值賦予給新定義的dbusername,這個dbusername依舊為空白
同時,如果登入成功之後,還要使用mt_rand(0,100000);在0~100000中產生一個保護登入成功頁面的隨機數code。
並且做完一切判斷之後,記得在最後加入一條關閉資料庫的語句,人走帶門。
登陸中……
(4)welcome.php
在welcome.php成功登入頁面中,先要用isset來判斷是否有login.php傳遞過來的code,
這裡的isset與上面is_null的區別,isset是判斷有沒有這個變數,is_null是在有這個變數的前提下,判斷這個變數是否為null,
如果沒有code這個session則說明使用者非正常途徑登入的,馬上扔到exit.php再見走人
如果是正常登入,則通過server對象裡面的各個小對象輸出使用者資訊。
歡迎登入歡迎登入!
你的IP:
你的系統語言:
你的瀏覽器為:
退出登入
至此,整個登入系統開發完成。