【发布时间】: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?
标签: php unity3d ftp hosting directadmin