2015-02-06 1 views
0

У меня возникли проблемы при попытке аутентификации пользователя с использованием кода C# на форуме PHP. До сих пор я пытался:Проверка подлинности PHP-сервера с использованием C# .NET

webClient.Credentials = new NetworkCredential("Me", "MyPassword"); 

затем:

HtmlDocument webPage = new HtmlDocument(); 
webPage.Load(new MemoryStream(client.DownloadData(this.websiteUri))); 

Я устал также добавлять печенье информации в заголовок WebClient.

Кроме того, я попытался:

using (WebClient client = new WebClient()) 
      { 

       byte[] response = client.UploadValues(url, new NameValueCollection() 
        { 
         { "usrname", "myLogin" }, 
         { "password", "[email protected]" } 
        }); 

       string result = System.Text.Encoding.UTF8.GetString(response); 
      } 

Как я могу проверить результаты? Я что-то неправильно делаю? Какие-либо предложения?

Спасибо!

ответ

0

Возможно, этот форум PHP использует какой-то тип входа в систему. Для регистрации в этом случае вам нужно отправить запрос POST на нужную страницу. Чтобы проверить, на какой странице вы должны сделать запрос, вы должны проверить HTML-код форума.

Ниже вы можете найти регистрационную форму для форума Simple Machines, прошедшего проверку через инструменты разработчика Chrome.

Form

Адрес для вызова вы можете найти в свойстве action из form тега. В вашем запросе POST вам нужно будет указать поля user и password.

Как вы можете видеть, в форме также есть какие-то антиблокировочные жетоны, чтобы сделать этот запрос сложнее автоматизировать. Это очень часто, поэтому вам, возможно, понадобится выполнить синтаксический анализ HTML, прежде чем войти в систему.

+0

ОК, я попробовал это. Следуя вашим предложениям, я не перенаправляюсь с login.php на главную страницу форума (URI ответа одинаковый). Я предполагаю, что это неправильно. Я должен быть перенаправлен, поэтому ответ URI должен быть следующим: «home.php». Кроме того - я вынужден использовать этот метод auth каждый раз, когда я проверяю URL? – Luke

+0

Перенаправление может зависеть от метода, используемого сервером. Проверьте заголовки ответа, они могут содержать заголовок «Location: some-address.php». Это обычный способ перенаправления на другую страницу после запроса POST. Прежде всего: если вы хотите войти в систему, вам необходимо сохранить куки-файлы, которые должны содержать ваш php-сеанс. Здесь у вас есть несколько советов, как это сделать: http://www.codeproject.com/Articles/195443/WebClient-Class-with-Cookies http://stackoverflow.com/questions/1777221/using-cookiecontainer-with-webclient -класс –