Что приводит к тому, что мой код не возвращает никаких данных при попытке отправить запрос на вход на локальный сервер? - PullRequest
0 голосов
/ 10 февраля 2020

В течение месяца я пытался выяснить, почему мой код ничего не возвращает после публикации wwwForm (я также пробовал новый эквивалент этой функции, но мне тоже не повезло с этим.) nameField и passwordField взяты из текстовых полей в игре, а код, использованный в моем сценарии входа в систему, скопирован и вставлен из сценария регистрации, но я изменил расположение файла на файл входа в систему. php файл. Сценарий регистрации работает нормально, и я могу добавлять новых пользователей в свою базу данных, но сценарий входа в систему выводит только «Отправлено». а не «настоящее», которое должно возвращаться при возврате формы, и оно никогда не выходит за пределы этой точки, что означает, что он пропускает пользователя без последствий, если он использует недопустимое имя, потому что скрипт никогда не возвращает ответ. Что я должен сделать, чтобы это исправить?

Спасибо,

Код Unity:

using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;

public class Login : MonoBehaviour
{
    public InputField nameField;
    public InputField passwordField;

    public Button acceptSubmissionButton;

    public void CallLogInCoroutine()
    {
        StartCoroutine(LogIn());
    }

    IEnumerator LogIn()
    {
        WWWForm form = new WWWForm();
        form.AddField("username", nameField.text);
        form.AddField("password", passwordField.text);
        WWW www = new WWW("http://localhost/sqlconnect/login.php", form);
        Debug.Log("Form Sent.");
        yield return www;
        Debug.Log("Present");
        if (www.text[0] == '0')
        {
            Debug.Log("Present2");
            DatabaseManager.username = nameField.text;
            DatabaseManager.score = int.Parse(www.text.Split('\t')[1]);
            Debug.Log("Log In Success.");
        }
        else
        {
            Debug.Log("User Login Failed. Error #" + www.text);
        }

    }

    public void Validation()
    {
        acceptSubmissionButton.interactable = nameField.text.Length >= 7 && passwordField.text.Length >= 8;
    }
}

логин. php:

<?php
echo "Test String2";
$con = mysqli_connect('localhost', 'root', 'root', 'computer science coursework');

// check for successful connection.
if (mysqli_connect_errno())
    {
        echo "1: Connection failed"; // Error code #1 - connection failed.
        exit();
    }

$username = mysqli_escape_string($con, $_POST["username"]);
$usernameClean = filter_var($username, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH);
$password = $_POST["password"];

if($username != $usernameClean)
{
    echo "7: Illegal Username, Potential SQL Injection Query. Access Denied.";
    exit();
}

// check for if the name already exists.

$namecheckquery = "SELECT username, salt, hash, score FROM players WHERE username='" . $usernameClean . "';";

$namecheck = mysqli_query($con, $namecheckquery) or die("2: Name check query failed"); // Error code # 2 - name check query failed.

if (mysqli_num_rows($namecheck) != 1)
{
    echo "5: No User With Your Log In Details Were Found Or More Than One User With Your Log In Details Were Found"; // Error code #5 - other than 1 user found with login details
    exit();
}

// get login info from query
$existinginfo = mysqli_fetch_assoc($namecheck);
$salt = $existinginfo["salt"];
$hash = $existinginfo["hash"];

$loginhash = crypt($password, $salt);
if ($hash != $loginhash)
{
    echo "6: Incorrect Password"; // error code #6 - password does not hash to match table
    exit;
}
echo "Test String2";
echo"0\t" . $existinginfo["score"];

?>

1 Ответ

0 голосов
/ 15 февраля 2020

Эта проблема была решена путем изменения входа в систему IENumerator () на IENumerator Start (). Программа работала правильно, когда она была запущена в начале сцены, но не когда она была вызвана нажатием кнопки. Как ни странно, функция Register () в другом скрипте (который разделяет большую часть своего кода с этим) работала нормально при запуске из кнопки. Я не уверен, почему это так.

using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;

public class Login : MonoBehaviour
{
    public InputField nameField;
    public InputField passwordField;

    public Button acceptSubmissionButton;

    IEnumerator Start()
    {
        WWWForm form = new WWWForm();
        form.AddField("username", nameField.text);
        form.AddField("password", passwordField.text);
        WWW www = new WWW("http://localhost/sqlconnect/login.php", form);
        Debug.Log("Form Sent.");
        yield return www;
        Debug.Log("Present");
        if (www.text[0] == '0')
        {
            Debug.Log("Present2");
            DatabaseManager.username = nameField.text;
            DatabaseManager.score = int.Parse(www.text.Split('\t')[1]);
            Debug.Log("Log In Success.");
        }
        else
        {
            Debug.Log("User Login Failed. Error #" + www.text);
        }

    }

    public void Validation()
    {
        acceptSubmissionButton.interactable = nameField.text.Length >= 7 && passwordField.text.Length >= 8;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...