client:
using UnityEngine;
using System.Collections;
using LitJson;
public class CreateSign : MonoBehaviour
{
public static CreateSign instance;
public static string _Username;
public static string _Password;
public GameObject LoginPanel;
public GameObject reg;
public GameObject login;
public UIInput Username;
public UIInput Password;
public UIInput Reusername;
public UIInput Repassword;
public UIInput Rerpassword;
public string CreateURL;
public string ValidataLoginURL;
// Use this for initialization
void Start()
{
instance = this;
Username.value = PlayerPrefs.GetString( "name", "" );
Password.value = PlayerPrefs.GetString( "password", "" );
}
// Update is called once per frame
void Update()
{
}
//登录与注册面板切换
public void OnToggleLogReg()
{
if( UIToggle.current.value )
{
if( UIToggle.current.name == "tog_login" )
{
reg.SetActive( false );
login.SetActive( true );
}
else if( UIToggle.current.name == "tog_reg" )
{
reg.SetActive( true );
login.SetActive( false );
}
}
}
//创建账号
public void OnClickReg()
{
if( string.IsNullOrEmpty( Reusername.value ) || string.IsNullOrEmpty( Repassword.value ) || string.IsNullOrEmpty( Rerpassword.value ) )
{
Global.Alert( "请您输入注册信息!" );
return;
}
if( Repassword.value != Rerpassword.value )
{
Global.Alert( "输入密码不一致!" );
return;
}
if( Repassword.value.Length < 5 || Reusername.value.Length<5 )
{
Global.Alert( "密码或账号最短为5位" );
return;
}
StartCoroutine( DoReg() );
}
private IEnumerator DoReg()
{
var formdata = new WWWForm();
formdata.AddField( "type", "register" );
formdata.AddField( "reusername", Reusername.value );
formdata.AddField( "repassword", Repassword.value );
var www = new WWW( CreateURL, formdata );
while( !www.isDone )
{
yield return null;
}
if( www.error == null )
{
JsonData jsondata = JsonMapper.ToObject( www.text );
if( jsondata != null && jsondata["r"].ToString() == "success" )
{
Username.value = Reusername.value;
Password.value = Repassword.value;
yield return new WaitForSeconds( 3 );
yield return StartCoroutine( ValidataLogin() );
}
else
{
Global.Alert( "账号重复!" );
}
}
else
{
Global.Alert( "当前网络不可用,请检查网络!" );
}
}
//已经账号进行登录
public void DoLogin()
{
if( !string.IsNullOrEmpty( Username.value ) && !string.IsNullOrEmpty( Password.value ) )
{
StartCoroutine( ValidataLogin() );
}
else
{
Global.Alert( "请输入账号和密码!" );
}
}
//账号验证
public IEnumerator ValidataLogin()
{
if( login != null )
{
_Username = Username.value;
_Password = Password.value;
}
var formdata = new WWWForm();
formdata.AddField( "type", "login" );
formdata.AddField( "username", _Username );
formdata.AddField( "password", _Password );
var www = new WWW( ValidataLoginURL, formdata );
while( !www.isDone )
{
yield return null;
}
if( www.error == null )
{
#region
JsonData jsonvalidata = JsonMapper.ToObject( www.text );
if( jsonvalidata != null )
{
if( jsonvalidata["r"] != null )
{
if( jsonvalidata["r"].ToString() == "success" )
{
if( login != null )
{
Global.Alert( "验证成功!" );
}
LoginPanel.SetActive( false );
PlayerPrefs.SetString( "name", _Username );
PlayerPrefs.SetString( "password", _Password );
UIMsgReceive.instance.QuickSDKButton();
}
else if( jsonvalidata["r"].ToString() == "usererror" )
{
if( login != null )
{
Global.Alert( "账号或密码错误!" );
}
}
//else if( jsonvalidata["r"].ToString() == "servererror" )
//{
// if( login != null )
// {
// Global.Alert( "服务器还未开启,请稍等再来!" );
// }
//}
else
{
if( login != null )
{
Global.Alert( "请求超时!" );
}
}
}
}
else
{
if( login != null )
{
Global.Alert( "账号或密码错误!" );
}
}
#endregion
}
else
{
Global.Alert( "当前网络不可用,请检查网络!" );
}
}
}
server:
config.php
<?php
$dbuser="root";
$dbhost="localhost";
$dbpass="y0tk75W^DN4N";
$dbname="website";
$dbserverlist="serverlist";
?>
<?php
/**
* api.php文件
*
* 账号登录注册页面
*
* @copyright Copyright (c) 2010-2011 coovan
* @author sq
* @version ver 1.0
*/
ini_set("display_errors", "On");
error_reporting(E_ALL | E_STRICT);
define('LOGFILE', 'logs/api.log');
include "config.php";
// if (!defined('CV_ROOT')) {
// exit('No direct script access allowed');
// }
function err_exit_json($errmsg) {
error_log("[".date('Y-m-d H:i:s')."] $errmsg", 3, LOGFILE);
exit;
}
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$r = array('r'=>'fail');
$type = $_POST['type'];
if (!$type) {
echo json_encode($r);
err_exit_json("type不能为空\r\n");
}
if($type=="login"){
$username = $_POST['username'];
$pwd = $_POST['password'];
$r['r'] = 'usererror';
if(!$username){
echo json_encode($r);
err_exit_json("用户名不能为空\r\n");
}
elseif(!$pwd){
echo json_encode($r);
err_exit_json("密码不能为空\r\n");
}
$md5pwd = md5($pwd);
$db = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if(mysqli_connect_error()){
echo json_encode($r);
err_exit_json("login mysqli_connect_error\r\n".mysqli_connect_error());
}
//设置编码
$db->set_charset("utf8");
$query = $db->query("select tokenpwd from user where loginname='".$username."'");
$tokenpwd = $query->fetch_array()['tokenpwd'];
if($md5pwd != $tokenpwd){
echo json_encode($r);
err_exit_json("用户名密码不匹配\r\n");
}
//关闭连接
$db->close();
$r['r'] = 'success';
exit(json_encode($r));
}
if($type=="register"){
$reusername = $_POST['reusername'];
$repwd = $_POST['repassword'];
$r['r'] = 'usererror';
if(!$reusername){
echo json_encode($r);
err_exit_json("用户名不能为空\r\n");
}
elseif(!$repwd){
echo json_encode($r);
err_exit_json("密码不能为空\r\n");
}
$md5pwd = md5($repwd);
$r['r'] = 'userexist';
$db = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if(mysqli_connect_error()){
echo json_encode($r);
err_exit_json("register mysqli_connect_error\r\n".mysqli_connect_error());
}
//设置编码
$db->set_charset("utf8");
$query = $db->query("select loginname from user where loginname='".$reusername."'");
if($query->num_rows>0){
echo json_encode($r);
err_exit_json("用户名已存在\r\n");
}
$query = $db->query("INSERT INTO `user`(loginname,tokenpwd,regtm,pwd) VALUES ('" .$reusername . "','" . $md5pwd . "','" . date('Y-m-d H:i:s') . "','".$repwd."')");
if(!$query){
err_exit_json('$query -> mysql_result为空');
}
//关闭连接
$db->close();
$r['r'] = 'success';
exit(json_encode($r));
}
}
?>
mysql:
表结构