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

时间:2015-04-17 09:29:36

标签: 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交换时它可以正常工作我可以清楚地看到脚本打印是正确的,因为如果我将其复制并粘贴到地址标题它做了它应该没有问题。 这是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 {

}
?>

有一段时间它一直是个问题,但我无法弄清楚出了什么问题。如果有人可以帮助那将是太棒了。

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

1 个答案:

答案 0 :(得分:0)

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

  1. 在浏览器中打开print (userLoginFile + "UserId=" + user);打印出来的内容。
  2. print(login.text);放在yield return login;之后(在下一个if内)。
  3. elseif (login.error == null)
  4. 放在print("Err: " + "login.error.ToString());
  5. 我在PHP脚本中看不到任何echo
  6. 输出形式1和2应该相同。