2015-02-06 32 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))); 

我也累加的cookie信息,以Web客戶端頭。

而且我想:

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開發人員工具檢查的Simple Machines論壇的一些登錄表單。

Form

地址給你打電話可以form標籤的財產action找到。在您的POST請求中,您需要包含字段userpassword

正如您所看到的,表單還包含某種防僞令牌,以使此請求更難以自動化。這是很常見的,所以你可能需要做一些HTML解析才能登錄。

+0

好吧,我試過了。在遵循你的建議之後,我沒有從login.php重定向到主論壇頁面(響應URI是相同的) - 我認爲這是不正確的。我應該重定向,所以響應URI應該是:「home.php」。 此外 - 我每次檢查URL時是否被迫使用這個認證方法? – Luke 2015-02-09 19:04:52

+0

重定向可能取決於服務器使用的方法。檢查響應標題,它們可能包含標題「Location:some-address.php」。這是POST請求後重定向到其他頁面的常用方式。 其次,如果你想保持登錄狀態,你需要保存cookies,它應該包含你的php會話。在這裏你有一些技巧如何做到這一點:http://www.codeproject.com/Articles/195443/WebClient-Class-with-Cookies http://stackoverflow.com/questions/1777221/using-cookiecontainer-with-webclient -類 – 2015-02-09 21:19:02