cocos2dx 连接mysql_Cocos2dx实现注册和登录功能

本地开一个wamp,然后在www目录下放login.PHP和register.PHP文件,开启apache服务。

cpp文件:

/*网络相关*/

#include "network\HttpClient.h"

using namespace cocos2d::network;

login_btn->addTouchEventListener(CC_CALLBACK_2(Login::login,this));//按钮监听

register_btn->addTouchEventListener(CC_CALLBACK_2(Login::regist,this));

void Login::login(Ref *pSender,Widget::TouchEventType type) {

switch (type)

{

case Widget::TouchEventType::ENDED:

string uid;

string pwd;

uid = pEditBox_name->getText();

pwd = pEditBox_password->getText();

string strid("uname=");

string strpwd("&upass=");

string url("http://192.168.1.148/login.PHP?");

string userid(uid);

string password(pwd);

url += strid + userid + strpwd + password;

HttpClient * client = HttpClient::getInstance();

HttpRequest * req = new HttpRequest();

req->setUrl(url.c_str());

req->setUrl(url.c_str());

req->setRequestType(HttpRequest::Type::GET);

req->setResponseCallback(this,httpresponse_selector(Login::httpResponse));

req->setTag("GET test");

client->send(req);

req->release();

log("denglu!!!");

break;

}

}

void Login::httpResponse(HttpClient* client,HttpResponse* response)

{

if (!response->isSucceed())

{

log("Receive from server error and the error code is %s\n",response->getErrorBuffer());

note_txt->setString("Unable to connect to server");

return;

}

else

{

vector * buffer = response->getResponseData(); //...获得返回数据的信息

char * strtmp = (char *)malloc(sizeof(char)*buffer->size());

//通过返回值判断是否登录成功

for (int i = 0; i < buffer->size(); i++)

{

strtmp[i] = (*buffer)[i];

log((*buffer)[i]);

}

string analys(strtmp);

free(strtmp);

strtmp = NULL;

if (analys.find("status:ok") < analys.length())

{

//登录成功,数据库中查询到用户信息

//登录到主场景

//MessageBox("登录成功","登录成功!"); //弹出对话框

log("登录成功");

note_txt->setString("Login success");

auto sc = HelloWorld::createScene();

Director::getInstance()->replaceScene(sc);

}

else

{

//登录失败,数据库中查找不到信息

//提示:密码或账户错误

//MessageBox("登录失败","登录失败!");

log("登录失败");

note_txt->setString("login faild!");

}

}

}

void Login::regist(Ref *pSender,Widget::TouchEventType type) {

switch (type)

{

case Widget::TouchEventType::ENDED:

//auto director = Director::getInstance();

//auto scene = HelloWorld::createScene();

//auto transition = TransitionCrossFade::create(1.0f,scene);

//director->replaceScene(transition);

savepass_Box->setSelectedState(false);

note_txt->setString("regin");

string uid;

string pwd;

TargetPlatform target = CCApplication::sharedApplication()->getTargetPlatform();

if (target == kTargetWindows) {

uid = pEditBox_name->getText();

pwd = pEditBox_password->getText();

}

else {

uid = user_txt->getString();

pwd = pass_txt->getString();

}

string strid("uname=");

string strpwd("&upass=");

string url("http://192.168.1.148/register.PHP?");

string userid(uid);

string password(pwd);

url += strid + userid + strpwd + password;

note_txt->setString(url.c_str());

HttpClient * client = HttpClient::getInstance();

HttpRequest * req = new HttpRequest();

req->setUrl(url.c_str());

req->setUrl(url.c_str());

req->setRequestType(HttpRequest::Type::GET);

req->setResponseCallback(this,httpresponse_selector(Login::httpResponse2));

req->setTag("GET test");

client->send(req);

req->release();

break;

}

}

//注册

void Login::httpResponse2(HttpClient* client,HttpResponse* response)

{

log("register PHP ");

if (!response->isSucceed())

{

log("Receive from server error and the error code is %s\n",response->getErrorBuffer());

return;

}

else

{

vector * buffer = response->getResponseData(); //...获得返回数据的信息

char * strtmp = (char *)malloc(sizeof(char)*buffer->size());

//通过返回值判断是否登录成功

for (int i = 0; i < buffer->size(); i++)

{

strtmp[i] = (*buffer)[i];

log((*buffer)[i]);

}

string analys(strtmp);

free(strtmp);

strtmp = NULL;

if (analys.find("status:ok") < analys.length())

{

MessageBox("注册成功","注册成功!"); //弹出对话框

log("注册成功");

note_txt->setString("register success");

}

else

{

//登录失败,数据库中查找不到信息

//提示:密码或账户错误

MessageBox("注册失败","注册失败!");

log("注册失败");

note_txt->setString("register Failed!");

}

}

}

数据库TestCocos,没有密码,表user,字段username和password.

register.PHP

$abc=$_GET['uname'];

$def=$_GET['upass'];

//1.连接数据库

$conn = MysqLi_connect("localhost","root","","TestCocos");

$query= MysqLi_query($conn,"SELECT count(*) FROM user WHERE username='".$abc."'");

$row=MysqLi_fetch_array($query);

//echo $row[0];

if($row[0]==1)

{

echo "This user exists";

}

else

{

if($abc=="")

echo "wrong name";

else

{

$result=MysqLi_query($conn,"INSERT Into user(username,password) Values('".$abc."','".$def."')");

echo "status:ok";

}

}

?>

login.PHP

header("charset=utf-8");

$us=$_GET["uname"];

$ps= $_GET["upass"];

//1.连接数据库

$conn = MysqLi_connect("localhost","testcocos");

if($conn)

{

//echo "hello";

}

$conn->set_charset("UTF-8");

//2.打开数据库

//MysqLi_select_db($conn,"test");

//3.新建查询

//$sql = 'select * from 123 where "username"='.$us.'';#39;.$us.'and upass = '. $ps .';;

//4.执行这个查询

//$sql="SELECT * FROM abcd";

$result = MysqLi_query($conn,"SELECT * FROM User WHERE username='".$us."'");

if($result)

{

//echo "true";

}

else

{

die("false".MysqLi_error($conn));

}

$n = MysqLi_num_rows($result); //返回查到的结果个数

//5. 关闭数据库

MysqLi_close($conn);

if($n-->0) //如果查到结果个数大于0,即有用户名和密码与传进来的参数一至

{

session_start();

$row = MysqLi_fetch_array($result); //取得查询结果那一行

$_SESSION['uid'] = $row["username"]; //返回数据库中的id

$usepass=$row["password"];

if($ps==$usepass)

{

echo "status:ok";

//echo 1; //服务器返回客户端一个1

}

else

echo "status:Failed";

//echo 10;

}

else

{

echo "status:Failed";

//echo 0; //没查到结果,返回0

}

?>

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值