五、 用戶登錄(login.php)
在開始的時候,我們說過游戲的入口是index.php文件;我們已經安裝好了,自然轉向登錄流程,開始看。
前面照例是一段我們前進介紹過的代碼,我們就不再詳細講了;不同的是使用的語言文件是login.mo,還有一個LOGIN的常量。如下
1
2
3
4
5
6
7
8
|
define( 'INSIDE' , true); define( 'INSTALL' , false); define( 'LOGIN' , true); $InLogin = true; $xnova_root_path = './' ; include ( $xnova_root_path . 'extension.inc' ); include ( $xnova_root_path . 'common.' . $phpEx ); includeLang( 'login' ); |
接下來又是我們前面講過的結構,我們看初次進入的分支是下面代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
$parse = $lang ; $Count = doquery( 'SELECT COUNT(*) as `players` FROM {{table}} WHERE 1' , 'users' , true); $LastPlayer = doquery( 'SELECT `username` FROM {{table}} ORDER BY `register_time` DESC' , 'users' , true); $parse [ 'last_user' ] = $LastPlayer [ 'username' ]; $PlayersOnline = doquery( "SELECT COUNT(DISTINCT(id)) as `onlinenow` FROM {{table}} WHERE `onlinetime` > '" . (time()-900) . "';" , 'users' , true); $parse [ 'online_users' ] = $PlayersOnline [ 'onlinenow' ]; $parse [ 'users_amount' ] = $Count [ 'players' ]; $parse [ 'servername' ] = $game_config [ 'game_name' ]; $parse [ 'forum_url' ] = $game_config [ 'forum_url' ]; $parse [ 'PasswordLost' ] = $lang [ 'PasswordLost' ]; $page = parsetemplate(gettemplate( 'login_body' ), $parse ); // Test pour prendre le nombre total de joueur et le nombre de joueurs connect閟 if ( $_GET [ 'ucount' ] == 1) { $page = $PlayersOnline [ 'onlinenow' ]. "/" . $Count [ 'players' ]; die ( $page ); } else { display( $page , $lang [ 'Login' ]); } |
主要是取得注冊用戶數、最后注冊用戶、當前在線數;并顯示登陸歡迎頁面,包括前面取得的這些用戶數據。
好了,現在用戶可以選擇注冊并轉向前面章節流程,或者是輸入用戶名和密碼轉入登錄流程。
1. 先根據輸入的用戶,從數據庫取得此用戶的記錄
2. 如果有記錄,則使用md5判斷用戶的密碼是否正確
3. 如果密碼正確,則看用戶是否選擇了記住密碼功能,后面用到
4. include數據庫配置文件config
5. Setcookie,里面有用戶名、密碼等
6. 重定向到frames.php文件
其中前面的幾個判斷是否的話,就要出現一些錯誤提示信息,并結束登錄過程,使用的是message()函數提示,前面也講過。