Search code examples
c#forumphpbbwindows-mobile-5.0

Posting In a phpBB Board By a C# Application


I'm going to improve one of my new projects and one of the features that I want to add is the possibility to post a new thread in a phpBB forum board, but it's possible to do this? If it is, how can I do this? Thanks.


Solution

  • I wont write all the code for you, but I can dump a couple of things I've built that work well.

    One way is to create a webbrowser control, and create something like this:

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                HtmlDocument doc = null;
                doc = webBrowser1.Document;
    
                //Find login text box and write user name  
                HtmlElement login = doc.GetElementById("username_or_email");
                login.InnerText = this.login;
    
                //Find password text box and write password
                HtmlElement password = doc.GetElementById("session[password]");
                password.InnerText = this.password;
    
                // go to the submit button
                webBrowser1.Document.GetElementsByTagName("input")[5].Focus();
                SendKeys.Send("{ENTER}");
    
            }
    

    Another way is to use http requests (not as likely to work reliably with phpBB)

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(twitterUrl + userID + ".xml");
                    string Credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(this.login + ":" + this.password));
    
                    request.Method = "POST";
                    request.ContentType = "application/xml";
                    request.AllowWriteStreamBuffering = true;
                    request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727;";
                    request.Headers.Add("Authorization", "Basic " + Credentials);
    
                    HttpWebResponse HttpWResp = (HttpWebResponse)request.GetResponse();
    
                    string response = HttpWResp.StatusCode.ToString();
                        HttpWResp.InitializeLifetimeService();
                        HttpWResp.Close();    
    
                    return response;
    

    The code above is used to log into twitter. You can modify either of those to suit your tastes. Remember phpBB is likely to use captcha and session validation to prevent exactly what you're trying to do.