Cocos2dx实现注册和登录功能
发布时间:2020-12-14 17:19:57 所属栏目:百科 来源:网络整理
导读:本地开一个wamp,然后在www目录下放login.php和register.php文件,开启apache服务。 cpp文件: /*网络相关*/#include "networkHttpClient.h"using namespace cocos2d::network;login_btn-addTouchEventListener(CC_CALLBACK_2(Login::login,this));//按钮监
本地开一个wamp,然后在www目录下放login.php和register.php文件,开启apache服务。 cpp文件:
/*网络相关*/ #include "networkHttpClient.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 %sn",response->getErrorBuffer()); note_txt->setString("Unable to connect to server"); return; } else { vector<char> * 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 %sn",response->getErrorBuffer()); return; } else { vector<char> * 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!"); } } }
php文件: 数据库TestCocos,没有密码,表user,字段username和password. register.php
<?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"; } } ?>
<?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 } ?> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |