Публиковать данные из Unity (C #) на сервер (PHP). Каждая часть работает сама по себе, но не работает вместе

0

Я использую Unity (С#) для подключения к моему серверному коду (написанному на PHP) и отправлю пользовательский ввод в PHP $_POST.

Я тестировал, что серверная сторона работает хорошо, она может отправлять значение моей базе данных (в таблицу user). Часть Unity также хорошо работает сама по себе, но как только я попытаюсь соединить их вместе, она отправляет пустое значение в мою пользовательскую таблицу.

Кроме того, автоматически увеличившийся идентификатор таблицы user позволяет мне знать, что С# правильно подключен к серверу php.

Почему это не работает, как я могу его решить?


Edit: Я попытался сломать линейный тест, и оба С# и php работают нормально. Когда я использую С# для отправки данных в php, values (username password email) данных values (username password email) пусты.


Таблица данных:

Изображение 174551

Проблема: (Нет данных, отправляемых на PHP с помощью С#):

Изображение 174551


С#:

using UnityEngine;
using System.Collections;

public class DataInserter : MonoBehaviour
{

    public string inputUserName;
    public string inputPassword;
    public string inputEmail;

    string CreateUserURL = "http://localhost/prevision/insertUser.php";

    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
            CreateUser(inputUserName, inputPassword, inputEmail);
    }

    public void CreateUser(string username, string password, string email)
    {
        WWWForm form = new WWWForm();
        form.AddField("UserNamePost", username);
        form.AddField("PasswordPost", password);
        form.AddField("EmailPost", email);

        WWW www = new WWW(CreateUserURL, form);
    }
}

PHP:

<?php
    include("dbConnection.php");

    //check connection
    if(!$connection)
    {
        die("no connection". mysqli_connect_error());
    }
    else
    echo "<h1>Connected</h1>"."<br>";

    $UserName = $_POST["UserNamePost"];
    $Password = $_POST["PasswordPost"];
    $Email = $_POST["EmailPost"];

    $sql = "INSERT INTO User (UserName,Password,Email) 
            VALUES ('".$UserName."','".$Password."','".$Email."')";
    $result = mysqli_query($connection, $sql);

    if(!result)
    {
        echo"Wrong";
    }
    else
    echo "Good";


?>
  • 1
    Пробовал что нибудь? Хотите поделиться кодом? Мы не можем помочь тому, что не видим
  • 0
    Итак, вы « добавили код », но в конечном итоге мы не можем работать с изображениями, пожалуйста, вставьте минимальный, полный и проверяемый пример
Показать ещё 4 комментария
Теги:

1 ответ

0

У меня были подобные проблемы в Unity с отправкой запроса Post.

Все работало нормально, но где-то или каким-то образом Unity/PHP перестала работать правильно из-за неправильных типов заголовков. Я переключил классы для подключения к сети и установил chunckedtransfer в false. Вот что работает для меня

public IEnumerator CreateUser(string username, string password, string email)
{
    WWWForm form = new WWWForm();
    form.AddField("UserNamePost", username);
    form.AddField("PasswordPost", password);
    form.AddField("EmailPost", email);

    UnityWebRequest www = UnityWebRequest.Post(CreateUserURL, form);
    www.chunkedTransfer = false;
    yield return www.SendWebRequest();

    if(www.error == null){
        // you can place code here for handle a succesful post

    } else {
        // what to do on error
    }

}

Затем вы можете вызвать свою функцию как Coroutine

void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
            StartCoroutine(CreateUser(inputUserName, inputPassword, inputEmail));
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню