Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过UnityforMySQL数据库操作访问服务器上的PHP文件?_C#_Php_Mysql_Unity3d_Ssl - Fatal编程技术网

C# 如何通过UnityforMySQL数据库操作访问服务器上的PHP文件?

C# 如何通过UnityforMySQL数据库操作访问服务器上的PHP文件?,c#,php,mysql,unity3d,ssl,C#,Php,Mysql,Unity3d,Ssl,我目前正在开发一个在线Unity游戏的登录系统。我的目标是在我的服务器上有一个数据库,并检查用户是否已注册。 如果您需要比提供的更多的背景信息,我会遵循这一点 我的服务器上有一个PHP脚本和一个数据库。PHP脚本位于我的web服务器的默认文件夹(purplepandagames.com/httpdocs/auth.PHP)下 对于simpleJSON,我正在使用 如果我这样运行代码,则会出现错误消息HTTP/1.1500 Internal Server error。如果我将authphpurl更

我目前正在开发一个在线Unity游戏的登录系统。我的目标是在我的服务器上有一个数据库,并检查用户是否已注册。 如果您需要比提供的更多的背景信息,我会遵循这一点

我的服务器上有一个PHP脚本和一个数据库。PHP脚本位于我的web服务器的默认文件夹(purplepandagames.com/httpdocs/auth.PHP)下

对于simpleJSON,我正在使用

如果我这样运行代码,则会出现错误消息
HTTP/1.1500 Internal Server error
。如果我将authphpurl更改为only,则不会有任何反馈和
Debug.Log(“响应:”+www.downloadHandler.text)语句只输出index.html文件

该网站有SSL认证,这可能是一个问题


总的来说,像这样解决这个问题是个好主意吗?我会在上传到数据库之前加密密码。但是目前我不明白是什么阻止了其他人也能够操作这个数据库。

正如您在评论中所指出的,您使用的是PHP 7.2.19版,并且使用的代码有点旧。这段代码使用了mysql函数,在PHP版本5.5.0中被弃用,在PHP版本7中被删除

我试图更改代码,它在我的pc(PHP7.3,MySQL)上工作,所以它也应该在您的服务器上工作

请使用此代码重新创建您的表(如果可能),因为某些原因,您发送的教程不使用自动增量,而且插入数据的位置非常小(varchar(20)表示密码?)

我还添加了mysqli\u real\u escape\u字符串,用于防止SQL注入。 我已将sha256添加到您的密码中,因为您不想以纯文本形式保存它们

SQL表创建:

创建表“用户”(
id bigint自动递增主键,
电子邮件varchar(256)不为空,
pwd varchar(256)不为空,
约束用户\u so\u电子邮件\u索引
唯一(电子邮件)
);
和PHP代码


您是否尝试从浏览器或任何类似Postman的软件调用URL?PHP脚本中可能有一些错误或服务器配置错误,因为HTTP 500表示服务器错误,而不是客户端错误。是的,如果我尝试在Chrome中打开purplepandagames.com/auth.PHP,也会出现HTTP错误500。这里是完整的,然后问题是在PHP中,而不是统一。我会试着看一看并修复它。谢谢!服务器运行的是PHP版本7.2.19,尽管转义字符串有助于防止SQL注入,但它不会阻止SQL注入。用Mysqli或PDO准备好的语句才是正确的选择。你所写的是正确的。我将使用准备好的语句编辑我的答案。非常感谢,连接现在起作用了。我不得不将电子邮件和pwd的大小更改为128,因为我得到的指定密钥太长。但注册仍然失败,无法注册新用户。连接正常,反馈正确,但是``JSONNode JSONNode=SimpleJSON.JSON.Parse(www.downloadHandler.text);`Log(“success:+jsonNode[“success”]);Log(“消息:+jsonNode[“msg”]);`返回False,无法注册用户。我尝试了不同的长度,所以你的
Debug.Log(“响应:”+www.downloadHandler.text)返回正确的JSON,但您无法解析它?还是我误解了?因为我的失眠正在返回正确的值()不,只是成功的反馈是负面的。但如果它能在你的机器上工作,它很可能就是Unity。
$hostname = "<localhost:3306>";
$username = "<username>";
$dbname = "<dbName>";
$password = "<password>";

mysql_connect($hostname, $username, $password) OR DIE ("Unable to connect to database! Please try again later.");
mysql_select_db($dbname);

string authphpurl = "https://purplepandagames.com/auth.php";    //enter the complete URL for auth.php

    IEnumerator PostDataForLogin()
    {     
        WWWForm form = new WWWForm();
        form.AddField("email", emailText.text);
        form.AddField("pwd", passwordText.text);

        var url = authphpurl + "?action=login";

        UnityWebRequest www = UnityWebRequest.Post(url, form);

        yield return www.SendWebRequest();

        Debug.Log("Response:" + www.downloadHandler.text);

        if (www.isNetworkError || www.isHttpError)
        {
            Debug.Log(www.error);
            responseText.text = www.error;
        }
        else
        {

            Debug.Log("Form upload complete!");

            JSONNode jsonNode = SimpleJSON.JSON.Parse(www.downloadHandler.text);
            Debug.Log("success : " + jsonNode["success"]);
            Debug.Log("message : " + jsonNode["msg"]);


            responseText.text = jsonNode["msg"];
        }
     }
var url = authphpurl + "?action=login";

List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
formData.Add(new MultipartFormDataSection("email=" + emailText.text + "&pwd=" + passwordText.text));

UnityWebRequest www = UnityWebRequest.Post(url, formData);
yield return www.SendWebRequest();