2015-02-06 1 views
0

PHP 포럼에서 C# 코드를 사용하여 사용자를 인증하는 동안 문제가 발생했습니다. 는 지금까지 시도 :C# .NET을 사용하는 PHP 포럼 인증

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

다음 :

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

나는 또한 웹 클라이언트의 헤더에 쿠키 정보를 추가 피곤.

는 또한 나는 시도 :

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 코드를 검사해야합니다.

아래에서 Chrome 개발자 도구를 통해 간단한 기계 포럼을 통해 양식을 확인할 수 있습니다.

Form

주소는 form 태그의 특성 action에서 찾을 수 있습니다 호출합니다. POST 요청에 userpassword 필드를 포함해야합니다.

폼에서 볼 수 있듯이 양식에는 위조 방지 토큰이 포함되어있어이 요청을 자동화하기가 더 어려워집니다. 이것은 매우 일반적이므로 로그인하기 전에 HTML 구문 분석을해야 할 것입니다.

+0

확인해 보았습니다. 귀하의 제안을 따른 후 login.php에서 기본 포럼 페이지로 리디렉션되지 않았습니다 (응답 URI는 동일합니다) - 이것이 적절하지 않다고 가정합니다. 리디렉션되어야하므로 응답 URI가 'home.php'이어야합니다. 또한 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 -수업 –