Я получаю странные результаты, когда обращаюсь к базе данных Sqlited с помощью Unity C# через XAMPP

    <?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()
    {

    }
       }

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

Файл PHP, содержащий код, не найден сервером. Возможно, вы выполняете неправильный URL-адрес или файл.

Milind Singh 21.11.2018 05:47

Вам действительно следует обратиться к руководству, прежде чем приступить к этому проекту. Ввод данных пользователем непосредственно в SQL - это красный флаг, как и пароли в виде простого текста. Также зачем перебирать результирующий набор, разве не существует только 1 пользователь на имя пользователя? Если нет, то это тоже проблема безопасности, потому что имя пользователя john может принадлежать двум людям.

user3783243 21.11.2018 05:50

@ user3783243 Это очень помогло. Я изменил код, может это быть лучший код? $ numrows = mysql_num_rows ($ проверка); if ($ numrows == 0) {die ("ID не существует. \ n"); }

꽥꽥꽥 21.11.2018 06:01

Вы не можете использовать функции mysql_ с mysqli. Используйте mysqli везде, вы вернетесь на много лет назад, если перейдете к mysql_

user3783243 21.11.2018 06:04

@MilindSingh В Unity я объявляю LoginUrI = 'localhost / escape_room / Login.php' следующим образом: Это неправильный URL?

꽥꽥꽥 21.11.2018 06:05

Можете ли вы запустить "localhost / escape_room / Login.php" по URL-адресу в браузере?

Milind Singh 21.11.2018 06:08

@MilindSingh Да, я сделал это. Не было никаких ошибок, кроме предупреждения о том, что входное значение должно быть выполнено из скрипта Unity C.

꽥꽥꽥 21.11.2018 06:12

давайте посмотрим ваш сценарий WWWform C#, я думаю, он принимает только один пост и строковое значение

comphonia 21.11.2018 06:57

@comphonia Добавил в текст. Спасибо.

꽥꽥꽥 21.11.2018 07:10
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
9
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  1. подтвердите свой путь в xampp, чтобы убедиться, что это путь к вашему каталогу C: \ xampp \ htdocs \ escape_room \ Login.php
  2. Вам нужно сначала опубликовать форму из единства, см. Код ниже
  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");
?>

Общая / неизвестная ошибка HTTP. Я использую сервер xampp, MySql, и не знаю, почему получаю сообщение об ошибке.

꽥꽥꽥 21.11.2018 08:24

Я тоже использую оба, не знаю почему, это работает для других вещей?

comphonia 21.11.2018 08:27

Нет, я запускал его только на своем ноутбуке.

꽥꽥꽥 21.11.2018 08:35

скопируйте новый код C#, просто протестируйте его в единстве и работайте. публичная строка испортила это, я также установил ее вне Start ()

comphonia 21.11.2018 08:41

вы должны увидеть результаты как отладку единства, не заходя в браузер, чтобы вы знали, что он опубликован

comphonia 21.11.2018 08:45

Ух ты. Вы - гений. Почему бы мне не подумать об этом? Я получил от тебя великую благодать. Спасибо!

꽥꽥꽥 21.11.2018 11:39

Рад, что смог помочь

comphonia 21.11.2018 19:58

Другие вопросы по теме