PHP网页游戏学习之Xnova(ogame)源码解读(四)


Posted in PHP onJune 23, 2014

五、 用户登录(login.php)

在开始的时候,我们说过游戏的入口是index.php文件;我们已经安装好了,自然转向登录流程,开始看。

前面照例是一段我们前进介绍过的代码,我们就不再详细讲了;不同的是使用的语言文件是login.mo,还有一个LOGIN的常量。如下

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');

接下来又是我们前面讲过的结构,我们看初次进入的分支是下面代码:

$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()函数提示,前面也讲过。

PHP 相关文章推荐
php 论坛采集程序 模拟登陆,抓取页面 实现代码
Jul 09 PHP
PHP操作MongoDB时的整数问题及对策说明
May 02 PHP
Zend Framework中的简单工厂模式 图文
Jul 10 PHP
PHP 面向对象详解
Sep 13 PHP
PHP编码规范的深入探讨
Jun 06 PHP
PHP上传图片进行等比缩放可增加水印功能
Jan 13 PHP
PHP命令行脚本接收传入参数的三种方式
Aug 20 PHP
PHP答题类应用接口实例
Feb 09 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
Jun 13 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
PHP工厂模式、单例模式与注册树模式实例详解
Jun 03 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
Jun 23 #PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
Jun 23 #PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
Jun 23 #PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
Jun 23 #PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
Jun 23 #PHP
ThinkPHP实现事务回滚示例代码
Jun 23 #PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
Jun 23 #PHP
You might like
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
一个简单的自动发送邮件系统(三)
2006/10/09 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
2012/02/22 PHP
Php连接及读取和写入mysql数据库的常用代码
2014/08/11 PHP
php实现文件管理与基础功能操作
2017/03/21 PHP
Yii2框架中日志的使用方法分析
2017/05/22 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
json 实例详细说明教程
2009/10/31 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
Vue 前端实现登陆拦截及axios 拦截器的使用
2019/07/17 Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
javascript中闭包closure的深入讲解
2021/03/03 Javascript
python类参数self使用示例
2014/02/17 Python
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
在树莓派2或树莓派B+上安装Python和OpenCV的教程
2015/03/30 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
浅谈Python处理PDF的方法
2017/11/10 Python
Python中一些深不见底的“坑”
2019/06/12 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
2019/08/17 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
2019/10/14 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
Python实现AES加密,解密的两种方法
2020/10/03 Python
html5 自定义播放器核心代码
2013/12/20 HTML / CSS
常用的HTML5列表标签
2017/06/20 HTML / CSS
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
房屋出售协议书
2014/04/10 职场文书
节约能源标语
2014/06/17 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2015元旦晚会主持人开场白+结束语
2014/12/14 职场文书
机关单位保密工作责任书
2015/05/11 职场文书
开学典礼致辞
2015/07/29 职场文书
教师节主题班会教案
2015/08/17 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP