加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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";
	}
}
?>


login.php
<?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
}
?>



(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读