DirectAdmin mysql连接统一游戏问题

Posted

技术标签:

【中文标题】DirectAdmin mysql连接统一游戏问题【英文标题】:DirectAdmin mysql connect to unity game problem 【发布时间】:2021-01-31 07:37:43 【问题描述】:

我编写了一个脚本来收集游戏中的电子邮件和分数并将其发送到数据库。到目前为止,在开发过程中,我使用了 MAMP,一切正常。现在我将构建上传到直接管理员,在 phpmyadmin 上设置数据库,在我的 php 文件中更改数据库名称密码等,但它不起作用!我已将所有文件放在 ftp 中的同一文件夹中(统一构建文件和包含 php 脚本的 sqlconnect 文件夹),但它不会更新数据库。

这是database.cs

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

public InputField emailField;
public InputField inputFieldRef;   
public Button submitButton;
// Start is called before the first frame update
public void CallSignup()

    StartCoroutine(Signup());


IEnumerator Signup()

    WWWForm form = new WWWForm();
    form.AddField("email",emailField.text);
    emailField.text = string.Empty;
    form.AddField("score",GameManager.score);
    UnityWebRequest www = UnityWebRequest.Post("http://localhost/sqlconnect/signup.php",form);
    yield return www.SendWebRequest();
    
    if(www.isNetworkError || www.isHttpError) 
        Debug.Log(www.error);
    
    else 
        Debug.Log("Form upload complete!");
    

public void VerifyInput()

    submitButton.interactable = (emailField.text.Length >= 8);


这是我的 php 文件

<?php

$servername = "localhost";
$username = "database username";
$password = "password";
$dbname = "database";

$conn = mysqli_connect($servername,$username,$password,$dbname);

if (mysqli_connect_errno())

    echo "1: Connection Failed";
    exit();


$email = msqli_real_escape_string($conn, $_POST["email"];
$emailclean = filter_var($email,FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | 
FILTER_FLAG_STRIP_HIGH);
$score = $_POST["score"];

$updatequery = "UPDATE testscore SET score='$score' WHERE email ='$email'";
mysqli_query($conn , $updatequery) or die("FAILED ".__LINE__." : ".mysqli_error($conn));

echo "0";

?>

【问题讨论】:

在代码中使用die(mysqli_error($conn)); 是一个非常糟糕的主意,因为它可能会泄露敏感信息。更多解释见这篇文章:mysqli or die, does it have to die? 【参考方案1】:

再次运行检查器后,我看到因为我没有打开通配符 DNS,它无法连接和显示。所以我添加了标题

header('Access-Control-Allow-Origin: *');

header('Access-Control-Allow-Methods: GET, POST');

header("Access-Control-Allow-Headers: X-Requested-With");

我现在可以看到一切正常

【讨论】:

以上是关于DirectAdmin mysql连接统一游戏问题的主要内容,如果未能解决你的问题,请参考以下文章

在 DirectAdmin 上安装 OpenLiteSpeed

directadmin 中子域的自定义路径目录

DirectAdmin 更改 DocumentRoot

在 directadmin 上安装 laravel 的 Apache 配置

DirectAdmin 使用 PHP 以编程方式创建子域

Directadmin 界面 虚拟主机 Httpd.conf 自定义