You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中C#脚本无法向PHP页面传递POST数据求助

解决Unity C# POST数据到PHP为空的问题

问题根源

你当前的代码中,Unity发送的是application/json格式的请求体,但PHP的$_POST超全局变量仅会自动解析**表单编码(application/x-www-form-urlencoded)或多部分表单(multipart/form-data)**格式的数据,无法直接处理JSON请求内容,因此$_POST["loginUser"]取不到值,最终导致SQL插入空值。

方案一:Unity改用表单格式提交(适配现有PHP代码,推荐)

修改Unity的C#代码,用WWWForm构造表单数据,确保PHP的$_POST能正常接收:

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

public class MyBehavior : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(Upload());
    }

    IEnumerator Upload()
    {
        WWWForm form = new WWWForm();
        // 添加表单字段
        form.AddField("loginUser", "1");
        form.AddField("field2", "2");

        using (UnityWebRequest www = UnityWebRequest.Post("https://www.ascended.us/monstro/login.php", form))
        {
            yield return www.SendWebRequest();

            if (www.result != UnityWebRequest.Result.Success)
            {
                Debug.Log(www.error);
            }
            else
            {
                Debug.Log("Form upload complete!");
            }
        }
    }
}

方案二:PHP端解析JSON请求体(需保持JSON格式提交时使用)

如果必须用JSON格式发送数据,PHP需要手动读取并解析请求体:

<?php
$sqllink = mysqli_connect("localhost", "REDACTED", "REDACTED", "REDACTED");
if (!$sqllink) {
    die('Could not connect: ' . mysqli_connect_errno() . ' - ' . mysqli_connect_error());
}

// 读取JSON请求体
$jsonData = file_get_contents('php://input');
$requestData = json_decode($jsonData, true);

// 检查解析是否成功并获取字段
if ($requestData !== null && isset($requestData['loginUser'])) {
    $loginUser = $requestData['loginUser'];
    // 必须做SQL注入防护!
    $loginUser = mysqli_real_escape_string($sqllink, $loginUser);
    $query = "INSERT INTO inbound_data (data) VALUES('$loginUser')";
    mysqli_query($sqllink, $query);
}
?>

关键注意事项

  • SQL注入防护:你的现有PHP代码存在严重的SQL注入风险,无论采用哪种方案,都必须对用户输入做转义(如mysqli_real_escape_string)或使用预处理语句(更安全)。
  • BlueHost服务器兼容性:部分共享主机可能限制php://input的读取,因此方案一的表单提交方式兼容性更强。
  • 调试技巧:可以在PHP中添加var_dump($_POST); var_dump(file_get_contents('php://input'));,然后在Unity中打印请求返回内容,确认数据传递状态。

内容的提问来源于stack exchange,提问作者Ascended_SOLAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 19:40:09