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实现下载功能的代码
Sep 29 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
Jul 25 PHP
部署PHP时的4个配置修改说明
Oct 19 PHP
PHP getallheaders无法获取自定义头(headers)的问题
Mar 23 PHP
PHP strip_tags保留多个HTML标签的方法
May 22 PHP
PHP微信分享开发详解
Jan 14 PHP
phpmyadmin下载、安装、配置教程
May 16 PHP
PHP 实现从数据库导出到.csv文件方法
Jul 06 PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
Jun 12 PHP
浅谈laravel数据库查询返回的数据形式
Oct 21 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输出指定时间以前时间格式的方法
2015/03/21 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
php实现微信企业转账功能
2018/10/02 PHP
浅析PHP7 的垃圾回收机制
2019/09/06 PHP
JQuery操作Select的Options的Bug(IE8兼容性视图模式)
2013/04/21 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
js判断横竖屏及禁止浏览器滑动条示例
2014/04/29 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
纯javascript实现简单下拉刷新功能
2015/03/13 Javascript
jQuery给多个不同元素添加class样式的方法
2015/03/26 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
2015/04/01 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
2016/09/06 Javascript
JavaScript使用ZeroClipboard操作剪切板
2017/05/10 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
2018/05/15 NodeJs
ES6实现图片切换特效代码
2020/01/14 Javascript
[06:30]DOTA2英雄梦之声_第15期_死亡先知
2014/06/21 DOTA
如何搜索查找并解决Django相关的问题
2014/06/30 Python
MySQL最常见的操作语句小结
2015/05/07 Python
Python实现的摇骰子猜大小功能小游戏示例
2017/12/18 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
2018/08/03 Python
python函数与方法的区别总结
2019/06/23 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
pytorch 获取tensor维度信息示例
2020/01/03 Python
elf彩妆英国官网:e.l.f. Cosmetics英国(美国平价彩妆品牌)
2017/11/02 全球购物
劳力士官方珠宝商:J.R. Dunn Jewelers
2018/09/29 全球购物
大学校庆邀请函
2014/01/11 职场文书
冬季施工防火方案
2014/05/17 职场文书
模特大赛策划方案
2014/05/28 职场文书
2014年国庆标语
2014/06/30 职场文书
毕业设计指导教师评语
2014/12/30 职场文书
孙振耀退休感言
2015/08/01 职场文书
详解CSS故障艺术
2021/05/25 HTML / CSS
vue项目如何打包之项目打包优化(让打包的js文件变小)
2022/04/30 Vue.js
java中如何截取字符串最后一位
2022/07/07 Java/Android