构建与php/mysql后端通信的unity前端应用程序。现在我正在处理它的注册和登录部分。在unity编辑器中,所有的工作都很完美,在浏览器前端注册也工作得很好。但是当我在unity中使用工作构建并在我的google pixel手机上进行测试时,注册和登录在我的手机上都失败了。登录时收到的错误消息是“解析服务器响应时出错,请重试!”在我的uilogin.cs中。然而,没有其他附加条件。我试着按照unity文档进行调试、adb和ddms来获取访问权限,以了解正在发生的事情,但我在所有这些项目上都失败了。android和www对象或web通信有什么特别不同的地方吗?这是我的uilogin.cs的一部分,还将包括login.php。
uilogin.cs
IEnumerator AttemptLogin(bool quickLogin)
{
CreateLoadingScreen();
DeactivateForm();
WWWForm form = new WWWForm();
form.AddField("email", Email.text);
form.AddField("password", Password.text);
WWW www = new WWW(URL.GetLoginURL, form);
yield return www;
DestroyLoadingScreen();
ActivateForm();
ParseResult(www.text, quickLogin);
}
void ParseResult(string result, bool quickLogin)
{
byte resultCode;
if (!byte.TryParse(result, out resultCode))
Result.text = "Error parsing response from server, please try again!";
else if (resultCode == 0)
{
if (RememberToggle.isOn && !quickLogin) // Remember me
{
PlayerPrefs.SetInt("remember", 1);
PlayerPrefs.SetString("email", Email.text);
PlayerPrefs.SetString("password", Password.text);
}
else if (!quickLogin)
{
TemporaryAccount.Email = Email.text;
TemporaryAccount.Password = Password.text;
}
SceneManager.LoadScene(3);
}
else // Failure
{
if (quickLogin)
ShowForm();
Result.text = WebError.GetLoginError(resultCode);
}
}
登录.php
<?php
require "conn.php";
$stmt = $pdo->prepare("SELECT * FROM account WHERE email=:email");
$stmt->bindParam(":email", $_POST['email']);
$stmt->execute();
$count = $stmt->rowCount(); // gets count of records found
if($count > 0) {
$result = $stmt->fetch(); // gets resultset
if(!password_verify($_POST['password'], $result[4]))
echo "2";
else
echo "0";
}
else {
echo "1";
}
?>
有什么想法吗?
更新#1我已打印www.text 以及www.error 收益回报后;文本为空,错误为:未知错误。
更新#2有趣的是,我也从中得到未知错误:
单击me.cs
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
public class Clickme : MonoBehaviour
{
public Text Result;
public void OnClick()
{
StartCoroutine(RunScript());
}
IEnumerator RunScript()
{
WWW www = new WWW("http://www.familypolaris.com/helloWorld.php");
yield return www;
if (www.text == "")
Result.text = "Result was empty, error: " + www.error;
}
}
helloworld.php
<?php
echo "Hello World!";
?>
1条答案
按热度按时间y4ekin9u1#
我想出来了,所以我会把答案贴在这里。在有人评论说他们试过我的代码,而且效果很好之后,我决定在这里尝试另一个设备。该设备也无法注册和登录。这说明我的构建设置有问题。我的第一个想法是将构建类型从gradle切换到internal,这立即解决了我的两个设备的问题。