| 經驗交流 |
|
|---|---|
|
使用者登入 | |
問題說明 | |
| 當我們將網站中的部份功能,改為需經身份認證方能使用時,您將需要一個使用者的「登入」機制,用來進行帳號密碼的檢查工作。 | |
我的做法 | |
| 首先,我們需要提供一個 Form 給使用者,以便輸入其帳號與密碼。請注意:在下方的表單中,將以 POST method 來傳遞資料,以免將使用者的密碼洩露在網址列上。 | |
|
...... ...... <form method="post" name="login" action="check.php"> 帳號:<input type="text" name="loginname"><br> 密碼:<input type="password" name="loginpswd"><br> <input type="submit" name="b1" value="登入"> </form> ...... ...... | |
|
其次,我們在 check.php 中,根據使用者的輸入值進行比對。確定其帳號密碼無誤時,以 Header 函數,將使用者重導至主作業畫面;否則,就導向錯誤警告的畫面。 | |
|
<? // 比對其帳號與密碼 $sql = "SELECT count(*) FROM user "; $sql .= "WHERE username = '$loginname' "; $sql .= "AND password = '$loginpswd' "; $rs = mysql_db_query($cfgDatabaseName, $sql, $link); list($nT) = mysql_fetch_row($rs); // 依檢查結果分別導向主作業畫面與錯誤警告畫面 if ( $nT ) { Header("location:main.php"); exit; } else { Header("location:error.php"); exit; } ?> | |
|
當使用者成功登入之後,為了方便其他程式來辨識他,我們可以使用 session 的功能,記錄此人的資訊。如此一來,上一段程式將修改如下: | |
|
<? // 比對其帳號與密碼 $sql = "SELECT realname, userlevel FROM user "; $sql .= "WHERE username = '" . $loginname . "' "; $sql .= "AND password = '" . $loginpswd . "' "; $rs = mysql_db_query($cfgDatabaseName, $sql, $link); $nT = mysql_num_rows($rs); // 依檢查結果分別導向主作業畫面與錯誤警告畫面 if ( $nT ) { list($realname, $userlevel) = mysql_fetch_row($rs); // 設定 session 變數之初值 $_SESSION["ssnUSERNAME"] = $loginname; $_SESSION["ssnREALNAME"] = $realname; $_SESSION["ssnUSERLEVEL"] = $userlevel; Header("location:main.php"); exit; } else { Header("location:error.php"); exit; } ?> | |
| 經驗交流 |
|


問題說明