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 图片加水印与上传图片加水印php类
May 12 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
Jun 09 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
Feb 14 PHP
利用PHP实现图片等比例放大和缩小的方法详解
Jun 06 PHP
ThinkPHP实现批量删除数据的代码实例
Jul 02 PHP
简单谈谈php中ob_flush和flush的区别
Nov 27 PHP
一波PHP中cURL库的常见用法代码示例
May 06 PHP
微信支付开发订单查询实例
Jul 12 PHP
Yii CGridView用法实例详解
Jul 12 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
Feb 15 PHP
Yii2框架类自动加载机制实例分析
May 02 PHP
PHP进阶学习之垃圾回收机制详解
Jun 18 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
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
2008/09/10 PHP
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
2016/11/20 PHP
PHP crypt()函数的用法讲解
2019/02/15 PHP
jquery 仿QQ校友的DIV模拟窗口效果源码
2010/03/24 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
jquerymobile局部渲染的各种刷新方法小结
2014/03/05 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
Python实现批量转换文件编码的方法
2015/07/28 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
pip安装python库的方法总结
2019/08/02 Python
Django 对象关系映射(ORM)源码详解
2019/08/06 Python
python多线程分块读取文件
2019/08/29 Python
python实现多线程端口扫描
2019/08/31 Python
python能在浏览器能运行吗
2020/06/17 Python
css3制作彩色边线3d立体按钮的示例(css3按钮)
2014/05/06 HTML / CSS
基于Html5实现的react拖拽排序组件示例
2018/08/13 HTML / CSS
Paul’s Boutique官网:英国时尚手袋品牌
2018/03/31 全球购物
如何利用cmp命令比较文件
2013/09/23 面试题
优秀员工演讲稿
2014/05/19 职场文书
美术兴趣小组活动总结
2014/07/07 职场文书
收款委托书范本
2014/09/11 职场文书
建设办主任四风问题整改思路和措施
2014/09/20 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
故意杀人案辩护词
2015/05/21 职场文书
2016年小学“感恩教师”主题队日活动总结
2016/04/01 职场文书
浅谈如何提高PHP代码的质量
2021/05/28 PHP
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python
Redis高可用集群redis-cluster详解
2022/03/20 Redis