好了环境也搭建好了工具也有了那我们就开始写PHP程序吧,上节我们说了我们设置网站的本机目录为d:/PHPWWW,你在里面新建个testPHP目录,名字随便起,就表示这次你的作业存放位置,但一定要是英文的。对了,还没有数据库,第一步当然是建立自己的服务器数据库啦。

1. 数据库搭建

在PHPStudy的MysqL管理器里我们点击MysqL-Front,打开MysqL前端工具,出现一个如下图“打开登录信息...”对话框,直接点击打开按钮进入


进去之后界面还是很清楚的,左侧是树结构显示你现有的哪些数据库,在"localhost"根结点上右击新建数据库“game”,就成下面这个样子:


在game数据库结点右键 新建 -》表格,新建个数据表newsuser表,来存放用户名和密码,表结构如下图: 那个id是系统自建的相当于主键。


点击数据浏览器,可以输入表数据,如下图,输入完一行右击某一格可以插入新纪录和删除本行纪录。


关于此工具其他详细用法我不想再多说,完全是傻瓜式,连我智商这么平庸的人都能看的懂那对于读者来说是难不住的了。

2. PHP服务器程序

我们写两个模块,一个是注册的一个是验证登录的,先来看注册程序怎么写

注册:

在网站根目录(d:/PHPWWW)的testPHP目录下,我们先新建个reguser.PHP文件,用我们在上节提到的工具PHPDesigner书写,代码如下:

<?PHP

/**
 * @author blog.anchen8.net
 * @copyright 2015
 */

$us = $_GET["uname"]; //从参数里获取uname字段,即用户名
$ps = $_GET["upass"]; //从参数里获取upass字段,即密码

//建立MysqL数据库连接,地址是127.0.0.1,登录名是root,密码是root
$conn = MysqL_connect("127.0.0.1","root","root");

//打开数据库
MysqL_select_db("game");
//新建插入查询
$sql = "insert into newsuser(uname,upass) values('". $us ."','". $ps ."')";

//执行这个查询
MysqL_query( $sql );

//关闭数据库
MysqL_close($conn);

echo "1,insertok";


?>
注释的很清楚,照抄就行了。

上面实现了用户注册的逻辑,想看效果可以在浏览器里输入 http://127.0.0.1/testPHP/reguser.PHP?uname=wang&upass=123来添加一个用户,网页显示“1,insertok”表示添加用户成功,打开MysqL数据库检查是否添加成功。

验证登录:

在testPHP目录里再新建个checkLogin02.PHP文件,代码如下:

<?PHP

/**
 * @author blog.anchen8.net
 * @copyright 2015
 */

$us=$_GET["uname"];
$ps= $_GET["upass"];
//1.连接数据库
$conn = MysqL_connect("127.0.0.1","root");
//2.打开数据库
MysqL_select_db("game");
//3.新建查询
$sql = "select * from newsuser where uname ='".$us."'and upass = '". $ps ."';";

//4.执行这个查询
$result = MysqL_query($sql);
$n = MysqL_num_rows($result); //返回查到的结果个数
//5. 关闭数据库
MysqL_close($conn);

if($n>0) //如果查到结果个数大于0,即有用户名和密码与传进来的参数一至
{
    session_start();
    $row = MysqL_fetch_array($result);  //取得查询结果那一行
    $_SESSION["uid"] = $row["id"];   //返回数据库中的id
    echo "1";    //服务器返回客户端一个"1"
}
else
{
    echo "0";  //没查到结果,返回"0"
}
?>
上面逻辑实现了PHP验证用户名和密码验证功能,想看效果可以在浏览器里输入 http://127.0.0.1/testPHP/checkLogin02.PHP?uname=wang&upass=123,登录成功网页会显示个1,登录失败网页显示0.

HOHO!服务器部分完成了(这也能叫服务器),下节开始写我们最擅长的cocos2d-x客户端部分了!

cocos2d-x网络编程 连接php服务器笔记2的更多相关文章

  1. 详解前端HTML5几种存储方式的总结

    本篇文章主要介绍了前端HTML5几种存储方式的总结 ,主要包括本地存储localstorage,本地存储sessionstorage,离线缓存(application cache),Web SQL,IndexedDB。有兴趣的可以了解一下。

  2. PhoneGap / iOS上的SQLite数据库 – 超过5mb可能

    我误解了什么吗?Phonegap中的sqlitedbs真的有5mb的限制吗?我正在使用Phonegap1.2和iOS5.解决方法您可以使用带有phonegap插件的原生sqliteDB,您将没有任何限制.在iOS5.1中,Websql被认为是可以随时删除的临时数据…

  3. ios – 领域:如何获取数据库的当前大小

    是否有RealmAPI方法使用RealmSwift作为数据存储来获取我的RealmSwift应用程序的当前数据库大小?

  4. ios – Realm – 无法使用现有主键值创建对象

    我有一个对象有许多狗的人.应用程序有单独的页面,它只显示狗和其他页面显示人的狗我的模型如下我有人存储在Realm中.人有详细页面,我们取,并显示他的狗.如果狗已经存在,我会更新该狗的最新信息并将其添加到人的狗列表中,否则创建新狗,保存并将其添加到人员列表中.这适用于coredata.在尝试用他的狗更新人时,领域会抛出异常无法使用现有主键值创建对象解决方法这里的问题是,即使你正在创建一个全新的Rea

  5. ios – UIWebView中的WebSQL / SQLite数据库的最大大小(phonegap)

    我知道一般来说,Web应用程序的本地存储空间有5MB的限制.本地网页浏览应用程式是否也有这个限制?

  6. macos – 运行brew命令充满了’同意Xcode / iOS许可证需要管理员权限,请通过sudo以root身份重新运行.’

    所以我跑了:如果滚动到底部,可以输入“同意”,然后就可以了.

  7. ios – Firebase离线存储高级 – 手动同步和进度信息

    >我可以提供一个捆绑数据库–安装App后我可以已经离线查询了Firebase数据?然后我有另一个关于Firebase的主要问题:>JSON存储是伟大的–但是这样我们不关心一个独特的结构,我们必须注意这一点插入总是正确的数据集?我从来没有试图显示实际的进展,但是当您从firebase中检索数据时,始终会在成功检索数据时调用onDataChange方法.https://firebase.google.com/docs/database/android/retrieve-data#read_data_onceC

  8. ios – 如何处理多用户数据库

    我的应用程序就像很多应用程序–它有一个用户输入用户名和密码的登录屏幕,以及登录按钮我的应用程序还使用CoreData来保存大多数用户的业务对象,当然也是用户特定的.我也有一个登出按钮来启用切换用户.这不会发生很多,但仍然是必要的).现在如果不同的用户登录,我需要获取他的具体数据.但是我该如何做呢?

  9. ios – Swift从Firebase数据库中获取特定价值

    我正在尝试从Firebase数据库中获取特定值.我看了一些像谷歌这样的文件,但我做不到.这是数据库的JSON文件:SWIFT代码:我想获得用户的电子邮件价值,而不是每个人.我怎样才能做到这一点?解决方法在您的代码中,快照将包含子值的字典.要访问它们,请将snapshot.value转换为Dictionary,然后访问各个子项是一个快照

  10. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部