首页 > 解决方案 > c#在UNITY中使用xampp和php登录

问题描述

大家好,所以我在 Unity 5 中开发了一个登录游戏,我成功地创建了一个注册表单,但即使用户名和密码正确,登录也总是说“登录失败”。我觉得我的代码只能识别“else”语句,因为我已经尝试过切换条件

这是C#代码

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class DataLogin : MonoBehaviour {
public InputField inputUsername1;
public InputField inputPassword1;
public static string Username;
public static string Password;


string UserURL1 = "http://localhost/login.php";

void Start(){

}
void Update(){

}
//  void OnMouseDown(Button insertButton){
//      InsertData(inputUsername, inputPassword);
//  }
public void Button_Click1(){
    StartCoroutine(LoginData (inputUsername1, inputPassword1));

}
IEnumerator LoginData(InputField inputUsername1, InputField inputPassword1){
    WWWForm form = new WWWForm ();
    form.AddField ("username", inputUsername1.text);
    form.AddField ("password", inputPassword1.text);

    WWW www = new WWW (UserURL1, form);
    yield return www;

    if (www.text [0] == '0') {
        Debug.Log ("User Login Success.");
    } else {
        Debug.Log ("User Login Failed.");
   }
  }
}

这是php代码

<?php
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "table_test";

    $user = $_POST["username"];
    $pass = $_POST["password"];

     // Create connection
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    // Check connection
    if (!$conn) {
      die("Connection failed: " . mysqli_connect_error());
    }

    $sql = " SELECT * FROM test WHERE username = '$user' AND password = '$pass'";
    $result = mysqli_query($conn, $sql);
    if ($result->num_rows > 0) {
      while ($row = $result->fetch_assoc()) {
        if ($row['username'] = $user && $row['password'] = $pass) {
          echo ("Login Successfully");
        } else {
          echo ("Login Failed");
        }
     }
   }
?>

标签: c#phpunity3d

解决方案


您正在检查 php 脚本的第一个字符的结果是否为“0”。

但是,在您的 PhP 脚本中,您永远不会返回“0”。你要么返回"Login Successfully",要么"Login Failed"

所以我建议你要么在你的 if 语句中检查它,要么你记录来自服务器的实际响应:

Debug.Log (www.text);

虽然我不确定这是否是正确的语法,因为您使用的是旧版本的 Unity。

此外,您的 Php 脚本容易受到 SQL 注入的攻击。查看这篇文章以获取有关该主题的更多信息


推荐阅读