unity php mysql_unity与php关于mysql登录的实例解析

客户端代码:

using UnityEngine;

using UnityEngine.UI;

using System.Collections;

public class login : MonoBehaviour

{

public InputField userIdField;

public InputField passwordField;

public Text statusText;

public Button loginBtn;

private string userId = "";

private string password = "";

private string url = "https://dasp.top/WE/login.php";

private void Awake()

{

loginBtn.onClick.AddListener(OnLogin);

}

public void OnLogin()

{

userId = userIdField.text;

password = passwordField.text;

if (string.IsNullOrEmpty(userId) || string.IsNullOrEmpty(password))

{

print("账户和密码不能为空");

return;

}

StartCoroutine(logining());

}

private IEnumerator logining()

{

WWWForm form = new WWWForm();

form.AddField("userId", userId);

form.AddField("password", password);

WWW www = new WWW(url, form);

yield return www;

if (www.error != null)

{

print("error is login:" + www.error);

statusText.text = www.error + "...";

}

else

{

print(www.text);

statusText.text = www.text;

}

}

}

在MySQL建一个测试的数据表:

DROP TABLE IF EXISTS `tb1`;

CREATE TABLE `tb1` (

`userid` varchar(30) NOT NULL,

`password` varchar(50) NOT NULL,

PRIMARY KEY (`userid`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- ----------------------------

-- Records of tb1

-- ----------------------------

INSERT INTO `tb1` VALUES ('100001', '123456');

INSERT INTO `tb1` VALUES ('100002', '123456');

INSERT INTO `tb1` VALUES ('100003', '123456');

INSERT INTO `tb1` VALUES ('100004', '123456');

PHP端代码:

dbconfig.php

mysqli = mysqli_connect($this->host, $this->user, $this->pwd))

{

die("Cant connect into database");

}

else

{

//echo "连接数据库成功...

";

}

$this->select_db($this->db_name);

}

//析构函数

function __destruct()

{

mysqli_close($this->mysqli);

}

/*

* 说明:

*/

public function get_mysql_handle()

{

return $this->mysqli;

}

/*

* 说明:

*/

public function select_db($_db)

{

if($this->mysqli != null)

{

if(mysqli_select_db($this->mysqli, $_db))

{

//echo "连接数据库成功...

";

}

else

{

die("Cant connect into database");

}

}

}

/*

* 说明: 执行一个sql无返回值

*/

public function execute($_sql)

{

if(empty($_sql))

{

echo "参数不能为空";

return;

}

if(!mysqli_query($this->mysqli, $_sql))

{

echo "执行失败...

";

}

}

/*

* 说明: 执行一个查询语句,并执行回调函数

*/

public function do_query($_sql, $query_callback = "")

{

if(empty($_sql))

{

echo "参数不能为空";

return;

}

if($result = mysqli_query($this->mysqli, $_sql))

{

$num_rows = $result->num_rows;

if($num_rows > 0)

{

while($row = $result->fetch_assoc())

{

if(!empty($query_callback))

{

call_user_func( $query_callback , $row );

}

}

return $num_rows;

}

else

{

return 0;

}

mysqli_free_result($result);

}

else

{

echo "执行失败...

";

}

}

//成员变量

private $host = "localhost"; //数据库地址

private $user = "root";//用户名

private $pwd = ""; //用户密码

private $db_name = "test"; //数据库

private $mysqli = null;

}

?>

login.php

do_query($sql, "login_callback") > 0)

{

if($password_db == $password)

{

//echo "登录成功...".$_POST["userId"].",".$_POST["password"].",".$password_db;

echo 1;

}

else

{

//echo "登录失败1...".$_POST["userId"].",".$_POST["password"].",".$password_db;

echo 2;

}

}

else

{

//echo "登录失败2...".$_POST["userId"].",".$_POST["password"].",".$password_db;

echo "登录失败2...";

}

}

function login_callback($row)

{

global $password_db;

$password_db = $row["v"];

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity的内置着色器中经常使用UNITY_VPOS_TYPE枚举类型,它表示当前顶点的坐标空间类型。以下是一个使用UNITY_VPOS_TYPE的实例: ```hlsl v2f vert(appdata_base v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); #if defined(UNITY_PASS_FORWARDBASE) || defined(UNITY_PASS_FORWARDADD) UNITY_SETUP_INSTANCE_ID(v); UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); o.worldPos = mul(unity_ObjectToWorld, v.vertex); o.worldNormal = UnityObjectToWorldNormal(v.normal); o.screenPos = ComputeScreenPos(o.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); #if defined(_ALPHATEST_ON) o.alpha = v.color.a; #endif #elif defined(UNITY_PASS_SHADOWCASTER) o.worldPos = mul(unity_ObjectToWorld, v.vertex); #endif return o; } ``` 在这个顶点着色器函数中,我们可以看到在#if defined(UNITY_PASS_FORWARDBASE) || defined(UNITY_PASS_FORWARDADD)条件下,我们通过UNITY_SETUP_INSTANCE_ID(v)和UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o)来设置实例ID和立体视图,然后根据UNITY_VPOS_TYPE的不同,我们可以对o.worldPos和o.vertex进行不同的计算。在这个例子中,我们通过UnityObjectToClipPos(v.vertex)来将顶点坐标从对象空间转换到裁剪空间,并将结果保存在o.vertex中。 需要注意的是,UNITY_VPOS_TYPE枚举类型的取值是根据渲染管线的不同而不同的。在顶点着色器中,我们需要根据当前的渲染管线类型来确定UNITY_VPOS_TYPE的取值,以正确地计算顶点的位置和法线等信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值