.NET POST на страницу PHP - PullRequest
0 голосов
/ 06 июня 2011

Я пытаюсь реализовать очень простую систему из моего приложения на C # .NET, которая отправляет IP-адрес компьютера для authenticate.php на моем веб-сервере.Страница php проверит этот IP-адрес в базе данных и ответит «да» или «нет».

Прошло много времени с тех пор, как я работал с PHP, и я немного запутался.Вот как выглядит моя .NET-функция.

public static bool IsAuthenticated()
{
    string sData = getPublicIP();
    Uri uri = new Uri("http://www.mysite.com/authenticate.php");
    if (uri.Scheme == Uri.UriSchemeHttp)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
        request.Method = WebRequestMethods.Http.Post;
        request.ContentLength = sData.Length;
        request.ContentType = "application/x-www-form-urlencoded";

        // POST the data to the authentication page
        StreamWriter writer = new StreamWriter(request.GetRequestStream());
        writer.Write(sData);
        writer.Close();

        // Retrieve response from authentication page
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        StreamReader reader = new StreamReader(response.GetResponseStream());
        string sResponse = reader.ReadToEnd();
        response.Close();

        if (sResponse == "yes")
        {
            Console.WriteLine("Authentication was Successful.");
            return true;
        }
        else
        {
            Console.WriteLine("Authentication Failed!");
            return false;
        }
    }
}

Так будет ли переменная POST $ _POST ['sData'];и как мне ответить на мое заявление с результатом?

1 Ответ

4 голосов
/ 06 июня 2011

Если предположить, что значение sData равно (скажем) "10.1.1.1", то в данный момент вы не публикуете правильные данные формы. Имя переменной не является частью текста, написанного

 writer.Write(sData);

Вам нужно сделать что-то вроде:

 string postData = "ipaddress=" + sData;

и затем используйте параметр формы ipaddress в вашем PHP.

Обратите внимание, что вы должны указывать длину содержимого binary , которая может не совпадать с длиной строки 1014 * в символах. Конечно, это нормально, если строка здесь полностью ASCII, что я ожидаю, если это IP-адрес ... но это стоит иметь в виду для других целей. (Точно так же вам обычно нужно помнить о любых символах, которые нуждаются в особой кодировке.) Также обратите внимание, что было бы лучше использовать операторы using для StreamWriter, HttpResponse и т. Д., Чтобы убедиться, что все закрывается, даже если выдается исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...