本地开一个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