Я получаю странные результаты при доступе к Sqlitedatabase с Unity C # через XAMPP - PullRequest
0 голосов
/ 21 ноября 2018
    <?php
    $servername = "localhost";
    $username="root";
    $password="";
    $dbName="escape_room";
    $user_username = $_POST['Input_user'];
    $user_password = $_POST['Input_pass'];
    $conn = new mysqli($servername, $username, $password, $dbName);
    if(!$conn){
        die("Cound not Connect: " . mysqli_connect_error());
    }

    $sql = "SELECT pass FROM escape_room WHERE user = '".$user_username."' ";
    $result = mysqli_query($conn, $sql);

    //Get the result and confirm login 
    if(mysqli_num_rows($result)>0){
        while($row = mysqli_fetch_assoc($result)){
            if($row['pass'] == $user_password){ 
                echo "login success";
                echo $row['pass'];  
            }else{
                echo "password incorrect";
                echo "password is =". $row['pass'];
            }
        }
    }else{
        echo "user not found";
        echo "password is =". $row['pass'];}

Я создал WWWForm в Unity C Script и попытался получить значение Mysqlitedatabase, запустив Login.php на сервере XAMPP.Однако я не смог подтвердить, совпадают ли идентификаторы или нет.В консоли появится только код, написанный на языке html.

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
      <head>
      <title>Object not found!</title>
     ...

Что мне делать?Спасибо за чтение.

using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
public class gamemanager : MonoBehaviour {

    [Header("LoginPanel")]
    public InputField ID;
    public InputField PW;
    [Header("CreateAccountPanel")]
    public InputField New_ID;
    public InputField New_PW;

    public string LoginUrI;
    // Use this for initialization
    void Start () {
        LoginUrI = "localhost/escape_room/Login.php";
    }


    public void LoginBtn()
    {
        StartCoroutine(LoginToDB(ID, PW));
    }

    IEnumerator LoginToDB(InputField username, InputField password)
    {
        Debug.Log(username.text);
        Debug.Log(password.text);

        WWWForm form = new WWWForm();
        form.AddField("Input_user", username.text);
        form.AddField("Input_pass", password.text);

        WWW webRequest = new WWW(LoginUrI, form);

        yield return webRequest;
        Debug.Log(webRequest.text);

    }

    public void CreateAccountBtn()
    {

    }
       }

+ Add) [Это то, что я реализовал в скрипте Unity C.У меня есть InputField, и я использовал метод AddField, чтобы принять этот inputField и передать его php.Кроме того, я создал объект WWW, чтобы разрешить доступ к Login.php через сервер.В конце я протестировал через Debug.Log, чтобы увидеть, насколько хорошо будут выглядеть результаты входа в систему.]

1 Ответ

0 голосов
/ 21 ноября 2018
  1. подтвердите свой путь в xampp, чтобы быть уверенным, что это ваш путь к каталогу C: \ xampp \ htdocs \ escape_room \ Login.php
  2. Сначала вам нужно опубликовать форму из Unity,см. код ниже
  3. Отладьте только php без sql, чтобы убедиться, что вы получаете правильные данные.см. код.

WWWform

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine.UI;
    using UnityEngine;
    using UnityEngine.Networking;
    public class gamemanager : MonoBehaviour {

    [Header("LoginPanel")]
    public InputField ID;
    public InputField PW;
    [Header("CreateAccountPanel")]
    public InputField New_ID;
    public InputField New_PW;

    string LoginUrI = "http://localhost/escape_room/login.php";
    // Use this for initialization
    void Start () {

    }


    public void LoginBtn()
    {
        StartCoroutine(LoginToDB(ID, PW));
    }

    IEnumerator LoginToDB(InputField username, InputField password)
    {
        Debug.Log(username.text);
        Debug.Log(password.text);

        WWWForm form = new WWWForm();
        form.AddField("Input_user", username.text);
        form.AddField("Input_pass", password.text);

        // Make Post Request
        using (var w = UnityWebRequest.Post(LoginUrI, form))
        {
            yield return w.SendWebRequest();
            if (w.isNetworkError || w.isHttpError) {
                 Debug.Log(w.error);
            }
            else {
                  Debug.Log(w.downloadHandler.text);
            }
        }


    }

    public void CreateAccountBtn()
    {

    }
       }

Проверьте код php, замените его на Login.php, чтобы сначала получить значения.

<?php


    if(isset($_POST) && !empty($_POST)){
        echo "Successful post"; 
        var_dump($_POST);
    } else die("Error: post not successful");
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...