c# - 从 C# 到 Php 的脚本推送不适用于应用程序

标签 c# php sql-server unity3d

好的,我正在使用 Unity 创建我的应用程序,并为它们之间的数据库创建 MSSQL,我有一个 PHP Exchange 服务器。

所以基本上我对这段代码有问题

using UnityEngine;
using System.Collections;

public class NewSession : MonoBehaviour {
    string userLoginFile = "http://"ServerIP"/UnitySQL/NewSession.php?";
    public UnityEngine.UI.Text NewSess;     

    string userid = "";
    string session = "";

    void OnGUI()
    {
        session = NewSess.text;
        userid = PlayerPrefs.GetString ("UserId");
    }



    public void Insert()
    {
        if (session == "") {
            StartCoroutine (LoginUser (userid));
        } else {
            print("DAMNSON");
        }
    }




    IEnumerator LoginUser(string user)
    {

        WWW login = new WWW (userLoginFile + "UserId=" + user);
        print (userLoginFile + "UserId=" + user);
        yield return login;
        if (login.error == null)
        {

            string[] credentials = login.text.Split('/');

            foreach(string str in credentials)
            {
                string[] creds = str.Split ('=');

                for(int i=0; i < creds.Length; i++)
                {
                    print ("winner");
                }


            }
        }

    }
}

现在我不知道为什么会出现这个问题,因为当我使用 localhost 并在我的服务器上进行 php 交换时它工作正常我可以清楚地看到脚本打印是正确的,因为如果我将其复制并粘贴到地址 header 中它做它应该做的没问题。 这是 PHP 脚本

<?php 
    $userid = $_REQUEST['UserId'];

    $user = 'user';
    $pass = 'Pass';
    $server = 'IP';
    $database = 'MyTable';

// No changes needed from now on
    $connection_string = "DRIVER={SQL Server};SERVER=$server;DATABASE=$database";
    $conn = odbc_connect($connection_string,$user,$pass);
    /*$q = "DECLARE @return_value int

EXEC    @return_value = [dbo].[InsertAnswersCheck]
        @varQuestionOptionId = '$QOI',
        @varUser = '$userid'
SELECT  'Return Value' = @return_value";*/
    $q = "INSERT INTO usersession (UserId) VALUES ($userid)";
    $result = odbc_exec($conn,$q);
    $num_rows = odbc_num_rows($result);

    if($num_rows > 0)
    {

    } else {

}
?>

这个问题已经有一段时间了,但我不知道哪里出了问题。如果有人可以提供帮助,那就太好了。

请注意它在我的本地主机上使用相同的脚本,如果设置它将要求用户登录两次。但是当我在服务器脚本上执行它时,它只会让你陷入循环,直到你复制并粘贴打印代码。

最佳答案

我不知道,但你可以试试:

  1. 在浏览器中打开您的 print (userLoginFile + "UserId="+ user); 打印出来的内容。
  2. print(login.text); 放在 yield return login; 之后(在下一个 if 内)。
  3. else 放入 if (login.error == null) with print("Err: "+ "login.error.ToString()) ;
  4. 我在您的 PHP 脚本中没有看到任何 echo

输出形式 1 和 2 应该相同。

关于c# - 从 C# 到 Php 的脚本推送不适用于应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29695394/

相关文章:

c# - 从 API 请求中删除 Arrafinity Cookie

c# - 尝试使用 EF 更新实体并使用 WCF 发送它 - 属性在更新场景中导致异常

php - 获取手机类型

c# - 存储过程需要参数但实际上提供了参数?

c# - Unity C# : How can I create a GameObject at screen position?

c# - 解释一下这个函数中 XOR 的使用?

php - Google Drive SDK 服务帐户错误 "The authenticated user has not installed the app with client id ..."

php - 我需要将我的表单连接到数据库(我认为)

sql-server - 带有没有命名空间的 SQL Server 的 XPath

sql - 实现海量搜索应用