Entwickler-Ecke

ASP.NET und Web - Webseiten zugriff


AlanWake - Sa 21.08.10 20:59
Titel: Webseiten zugriff
Hallo Leute,

hoffe das ich hier richtig bin.

Ist es möglich eine Windows Form zu schreiben die ohne den webBrowser1 auf eine Seite zugreift ?

Wenn ja, wie sieht so was aus und woran kann ich erkennen das ich mit der Seite verbunden bin ?

gruß Alan


jaenicke - Sa 21.08.10 21:06

Du kannst dir den Quelltext der Seite anderweitig ziehen.

Aber was meinst du mit verbunden? :gruebel:
Es wird immer eine Anfrage an den Server geschickt und du bekommst die Antwort, fertig.

Es sei denn du redest von sowas wie AJAX und Skripten, das geht nur im WebBrowser Objekt. Die Anfragen kannst du aber auch selbst machen.


AlanWake - Sa 21.08.10 21:57

Ich hatte ihrgendwo mal gelesen das so etwas mit HttpWebRequest oder SqlClient geht.
Oder habe ich da was falsch verstanden ?

gruß Alan


jaenicke - Sa 21.08.10 22:01

user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Ich hatte ihrgendwo mal gelesen das so etwas mit HttpWebRequest oder SqlClient geht.
Was hat das eine mit dem anderen zu tun? :gruebel:

Wie die Namen schon sagen ist das erste eine Klasse um Web Anfragen über Http zu stellen, das zweite ein Client für einen SQL Server...

Über HttpWebRequest kannst du auf Webseiten zugreifen, ja. In der Dokumentation [http://msdn.microsoft.com/de-de/library/system.net.httpwebrequest.aspx] steht auch wie.


Kha - Sa 21.08.10 22:03

user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Ich hatte ihrgendwo mal gelesen [...]
Hört sich verdächtig nach dem Thema unter deinem an ;) . [3.5] kompletten quelltext ohne website zu laden auslesen [http://c-sharp-forum.de/topic_kompletten+quelltext+ohne+website+zu+laden+auslesen_101131.html]


AlanWake - Sa 21.08.10 22:19

Ich habe keine Ahnung deshalb frage ich :)

Ich wollte ein Programm schreiben mit dem ich auf meine Homepage, mit meinem Daten zugreifen kann, wenn dann der Login funktioniert hat soll dann in einer Textbox stehen: Login erfolgreich !

Geht das ohne einen webBrowser zu benutzen ?

gruß Alan


jaenicke - Sa 21.08.10 22:23

Nun ja, dann musst du dein Loginskript mit den entsprechenden Logindaten aufrufen. Je nachdem was das dann macht, bekommst du dann mit der Antwort eine Session-ID oder Cookies oder ähnliches um bei weiteren Seitenaufrufen dann das Login zu benutzen.

Wie das passiert, musst du schon selbst wissen, es ist ja deine Seite...


AlanWake - Sa 21.08.10 22:27

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Wie das passiert, musst du schon selbst wissen, es ist ja deine Seite...


Das ist mir schon klar aber ich weiß nicht wie so ein Skript in C# aussehen soll oder wie ich so etwas schreiben/anfangen kann !?

gruß Alan


jaenicke - Sa 21.08.10 23:30

Hast du denn einmal das Beispiel und die Methoden in der Dokumentation angeschaut?

Wo fehlts denn? An den Kenntnissen über HTTP? Oder der reinen Umsetzung? Und wenn bei der Umsetzung, was möchtest du denn schicken in Post usw.?


Yogu - Sa 21.08.10 23:32

Wie sieht denn das serverseitige Script aus? Was würde man im Browser machen, um sich anzumelden? Ruft man einfach eine URL auf und bekommt dann angezeigt, ob der Login erfolgreich war? Dann kannst du diese Methode benutzen (achtung, geklaut ;)):
user profile icon0odarkio0 hat folgendes geschrieben Zum zitierten Posting springen:

C#-Quelltext
1:
2:
3:
                // Quelltext holen
                WebClient web = new WebClient();
                string quelltext = web.DownloadString(url);


AlanWake - So 22.08.10 02:09

@ jaenicke: Ich habe so etwas noch nie vorher gemacht also fehlt es an Kenntnissen in beiden Bereichen :(

@ Yogu: Ich habe mir mal ein Test Forum erstellt: http://alanwake.phpbb8.de/ucp.php?mode=login
Ich wollte es so machen das ich in eine Textbox den URL der Seite eingebe und in 2 andere Textboxen mein Username und mein Passwort :)
Und das in einem Label angezeigt wird wenn der Login erfolgreich wahr.
Ist so etwas machbar ohne einen webBrowser ?

gruß Alan


Yogu - So 22.08.10 13:33

Ah, endlich etwas konkretes.

Die folgende Methode führt eine HTTP-Anfrage durch und sendet gleichzeitig POST-Daten. Die sind wichtig, weil die Login-Daten über POST versendet werden.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
    private string postRequest(string url, Dictionary<stringstring> postData) {
      // Die POST-Daten in die Form "x-www-form-urlencoded" bringen - also wie bei Daten nach ? bei URLs
      string postString = "";
      foreach (string key in postData.Keys) {
        string value = postData[key];
        if (postString != "")
          postString += "&";
        postString = HttpUtility.UrlEncode(key) + "=" + HttpUtility.UrlEncode(value);
      }

      // Den String in UTF8-Bytes encodieren
            UTF8Encoding encoding = new UTF8Encoding ();
            byte[] data = encoding.GetBytes (postString);

      // Die Klasse WebRequest erlaubt es, eine Http-Anfrage durchzuführen. 
      WebRequest request = WebRequest.Create(url);

      // Wir brauchen für die Login-Daten die Methode POST
      request.Method = "POST";

      // Nun schreiben wir die POST-Daten in die Anfrage
      request.ContentType = "application/x-www-form-urlencoded";
      request.ContentLength = data.Length;
      Stream stream = request.GetRequestStream();
      stream.Write(data, 0, data.Length);
      stream.Close();

      // Gibt die Antwort (also den Seitenquelltext) als String zurück
      Stream responseStream = request.GetResponse().GetResponseStream();
      StreamReader reader = new StreamReader(responseStream, new UTF8Encoding());
      string response = reader.ReadToEnd();
      responseStream.Close();

      return response;
    }

Aufrufen kannst du die Methode so:


C#-Quelltext
1:
2:
3:
4:
5:
      Dictionary<stringstring> postData = new Dictionary<string,string>();
      postData["login"] = "login";
      postData["username""(benutzername)";
      postData["pass"] = "(passwort)";
      string response = postRequest("http://alanwake.phpbb8.de/ucp.php?mode=login", postData);

Dann hast du in der Variable response den Quellcode der Datei und kannst ihn nach einem Text wie "Login erfolgreich" durchsuchen.

Als ich den Code getestet habe, bin ich allerdings auf einen seltsamen Fehler gestoßen, der mir vorher noch nie begegnet ist: Der HTTP-Fehler 417 ("Expectation failed"). Das bedeutet, dass etwas mit dem Expect-Header nicht stimmt, von dem ich auch noch nie gehört habe. Vielleicht weiß jemand anderes weiter...

Grüße,
Yogu


Kha - So 22.08.10 13:48

HTTP POST Returns The Error: 417 “Expectation Failed.” [http://stackoverflow.com/questions/566437/http-post-returns-the-error-417-expectation-failed-c-resolved/566847#566847]


AlanWake - So 22.08.10 17:04

@ Yogu: Beim ersten Quellcode erkennt mein C# HttpUtility nicht an :(

Ich benutze die beiden usings:
using System.IO;
using System.Net;

Aber er er erkennt es trozdem nicht an, welches using muss ich da benutzen ?

gruß Alan


Yogu - So 22.08.10 17:31

Hups, ich hab mir eigentlich vorgenommen, das dazuzuschreiben :oops:

Du musst den Verweis System.Web hinzufügen (Achtung, das Zielframework darf nicht 4.0 Client Pofile sein und den Namespace System.Web einbinden.


AlanWake - So 22.08.10 18:09

@ Yogu: Ich habe jetzt using System.Web; hinzugefügt aber mein C# erkennt immer noch nicht HttpUtility an :(

Ich habe C# 2010 Express mit dem net framework 4.0, ist das jetzt ein Hindernis für den Code ?

gruß Alan

ps. Das ist mein Code:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Web;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private string postRequest(string url, Dictionary<stringstring> postData)
        {
            // Die POST-Daten in die Form "x-www-form-urlencoded" bringen - also wie bei Daten nach ? bei URLs
            string postString = "";
            foreach (string key in postData.Keys)
            {
                string value = postData[key];
                if (postString != "")
                    postString += "&";
                postString = HttpUtility.UrlEncode(key) + "=" + HttpUtility.UrlEncode(value);
            }

            // Den String in UTF8-Bytes encodieren
            UTF8Encoding encoding = new UTF8Encoding();
            byte[] data = encoding.GetBytes(postString);

            // Die Klasse WebRequest erlaubt es, eine Http-Anfrage durchzuführen. 
            WebRequest request = WebRequest.Create(url);

            // Wir brauchen für die Login-Daten die Methode POST
            request.Method = "POST";

            // Nun schreiben wir die POST-Daten in die Anfrage
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = data.Length;
            Stream stream = request.GetRequestStream();
            stream.Write(data, 0, data.Length);
            stream.Close();

            // Gibt die Antwort (also den Seitenquelltext) als String zurück
            Stream responseStream = request.GetResponse().GetResponseStream();
            StreamReader reader = new StreamReader(responseStream, new UTF8Encoding());
            string response = reader.ReadToEnd();
            responseStream.Close();

            return response;
        }
        private void button1_Click(object sender, EventArgs e)
        {
      Dictionary<stringstring> postData = new Dictionary<string,string>();
      postData["login"] = "login";
      postData["username"] = "(benutzername)";
      postData["pass"] = "(passwort)";
      string response = postRequest("http://alanwake.phpbb8.de/ucp.php?mode=login", postData);
        }
    }
}


Trashkid2000 - So 22.08.10 18:49

Du musst unter Verweise einen Verweis auf die Assembly System.Web hinzufügen. Dann klappt das schon.

Aber beim Test dann:

Der Remoteserver hat einen Fehler zurückgegeben: (417) Expectation Failed.


AlanWake - So 22.08.10 19:18

Ihrgendwie finde ich das nicht :(

Wenn ich ein neues Projek erstellt habe gehe ich auf das Feld, Projektmappen-Explorer und dann auf Verweise mit der rechten Maustaste und auf Verweis hinzufügen.
Im .NET und COM habe ich die Listen durchsucht aber das einzige was ich mit WEB gefunden habe wahr: webvw 1.0 Type Libary :cry:

gruß Alan


Trashkid2000 - So 22.08.10 19:30

Unter .NET, und dannziemlich am Ende der Liste System.Web.
Wenn sie nicht da ist, hast Du sie unter Verweise schon drin !?


AlanWake - So 22.08.10 20:35

Ich habe es immer noch nicht gefunden :cry:

Ich habe aus der Liste die 2 Systems hinzugefügt die ich rot makiert habe: http://www5.pic-upload.de/22.08.10/w27d8pzy5ne8.jpg

Aber C# erkennt immer noch nicht HttpUtility an :(

gruß Alan


Trashkid2000 - So 22.08.10 20:44

Hmmm, ist dann wohl nicht in der Liste. Kannst du mal bitte zeigen bzw. gucken, welche Assemblies schon in das Projekt eingebunden sind (unter Verweise).

Ansonsten havbe ich das mit der Fehlermeldung nun auch geschnallt. Lag an einer Property des HttpWebRequest, die auf false gestellt werden musste. Diese:

C#-Quelltext
1:
request.ServicePoint.Expect100Continue = false;                    

Nun klappt es.

Habe mal Deinen Code etwas umgeschrieben, z.B. mit usings und auch Ausgabe der Fehlermeldung bei einer fehlerhaften Anmeldung. Hier mal der Code:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
private string postRequest(string url, Dictionary<stringstring> postData)
{
  StringBuilder sb = new StringBuilder();
  foreach (string key in postData.Keys)
  {
    if (sb.Length > 0)
      sb.Append('&');
    sb.Append(HttpUtility.UrlEncode(key));
    sb.Append("=");
    sb.Append(HttpUtility.UrlEncode(postData[key]));
  }

  byte[] data = Encoding.UTF8.GetBytes(sb.ToString());

  // Die Klasse WebRequest erlaubt es, eine Http-Anfrage durchzuführen. 
  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            
  request.ServicePoint.Expect100Continue = false;

  // Wir brauchen für die Login-Daten die Methode POST
  request.Method = "POST";

  // Nun schreiben wir die POST-Daten in die Anfrage
  request.ContentType = "application/x-www-form-urlencoded";
  request.ContentLength = data.Length;
  using (Stream stream = request.GetRequestStream())
  {
    stream.Write(data, 0, data.Length);    
  }

  using(Stream responseStream = request.GetResponse().GetResponseStream())
  {
    using (StreamReader reader = new StreamReader(responseStream, new UTF8Encoding()))
    {
      response = reader.ReadToEnd();
    }
  }
  return response;
}

private void button1_Click(object sender, EventArgs e)
{
  Dictionary<stringstring> postData = new Dictionary<stringstring>();
  postData["username"] = "(benutzername)";
  postData["password"] = "(passwort)";
  postData["login"] = "Login";
  string response = postRequest("http://alanwake.phpbb8.de/ucp.php?mode=login", postData);

  Regex regex = new Regex("<div class=\"error\">(?<ErrorMsg>.+?)</div>");
  Match errorMatch = regex.Match(response);
  if (errorMatch != null)
    MessageBox.Show(errorMatch.Groups["ErrorMsg"].Value);
  else
    MessageBox.Show("Erfolgreich angemeldet");
}


Kha - So 22.08.10 21:11

user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe es immer noch nicht gefunden :cry:
Benutze besser Uri.EscapeDataString, das gibt es auch im Client Profile.


Yogu - So 22.08.10 21:24

user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Ihrgendwie finde ich das nicht :(

Wenn du Visual Studio 2010 verwendet, musst du aufpassen, was in den Projektoptionen unter "Zielframework" eingestellt ist. Standardmäßig steht da (zumindest bei mir) "4.0 Client Profile", das ist aber genau das Framework, bei dem es die Assembly System.Web nicht gibt. Wenn du irgendeinen anderen auswählst, sollte die Assembly unter .NET aufgelistet sein.

user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
Achtung, das Zielframework darf nicht 4.0 Client Pofile

Allerdings ist user profile iconKhas Vorschlag besser.

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Benutze besser Uri.EscapeDataString, das gibt es auch im Client Profile.

Ich hab mir eigentlich schon fast gedacht, dass die Methode auch in der System-Assembly vorhanden sein muss. Aber ich habe nur nach UrlEncode gesucht.


AlanWake - Mo 23.08.10 01:12

@ Kha: Das mit dem Uri.EscapeDataString hat super funktioniert :)

@ Trashkid2000: Leider erkennt mein C# die Wörter response,Regex und Match nicht an :(

Tut mir leid das ich euch auf die nerven gehe, bin halt noch ein anfänger der von den Profis was lernen möchte :)

gruß Alan

ps. Das sind meine Verweise die ich in meinem Projekt habe: http://www5.pic-upload.de/23.08.10/d92uhycgayu.jpg


Trashkid2000 - Mo 23.08.10 05:59

Stimmt, response hatte ich beim Test als globale Variable gehabt.
Entweder so, oder Du deklariest den String erst dort, wo er benötigt wird.
Also an dieser Stelle:

C#-Quelltext
1:
2:
3:
string response = string.Empty;
using(Stream responseStream = request.GetResponse().GetResponseStream())
...

Und das mit den regulären Ausdrücken dürfte nach Einbinden des Namespaces mit

C#-Quelltext
1:
using System.Text.RegularExpressions;                    

auch funktionieren.
Aber sorry, sowas das ist wirklich Grundwissen! Als Anfänger solltest Du vielleicht erst einmal die Grundlagen lernen.

Frage am Rande:
Was hat das eigentlich für einen Sinn, wenn Du Dich über das Programm in Deinem Forum anmelden kanst? Ich meine, was soll denn danach passieren? Oder ist es nur mal ein Test?

LG, Marko


jaenicke - Mo 23.08.10 08:10

user profile iconTrashkid2000 hat folgendes geschrieben Zum zitierten Posting springen:
Aber sorry, sowas das ist wirklich Grundwissen!
Naja, vor allem bietet Visual Studio normalerweise beim Maus drüberhalten an einfach die using-Klausel automatisch zu ergänzen... (oder macht das nur die Professional? :gruebel:)


AlanWake - Mo 23.08.10 15:48

@ Trashkid2000: Vielen dank das du so viel Geduld mit mir hattest :)

Es funktioniert jetzt, aber wenn ich versuche mich mit Admin einzuloggen kommt immer die Fehlermeldung in der Messagebox, das der Benutzername falsch wäre :?

Mein Code:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Text.RegularExpressions;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
        private string postRequest(string url, Dictionary<stringstring> postData)
        {
            string response = string.Empty;
            StringBuilder sb = new StringBuilder();
            foreach (string key in postData.Keys)
            {
                if (sb.Length > 0)
                    sb.Append('&');
                sb.Append(Uri.EscapeDataString(key));
                sb.Append("=");
                sb.Append(Uri.EscapeDataString(postData[key]));
            }

            byte[] data = Encoding.UTF8.GetBytes(sb.ToString());

            // Die Klasse WebRequest erlaubt es, eine Http-Anfrage durchzuführen. 
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            request.ServicePoint.Expect100Continue = false;

            // Wir brauchen für die Login-Daten die Methode POST
            request.Method = "POST";

            // Nun schreiben wir die POST-Daten in die Anfrage
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = data.Length;
            using (Stream stream = request.GetRequestStream())
            {
                stream.Write(data, 0, data.Length);
            }

            using (Stream responseStream = request.GetResponse().GetResponseStream())
            {
                using (StreamReader reader = new StreamReader(responseStream, new UTF8Encoding()))
                {
                    response = reader.ReadToEnd();
                }
            }
            return response;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Dictionary<stringstring> postData = new Dictionary<stringstring>();
            postData["username"] = "(Admin)";
            postData["password"] = "(*****)";
            postData["login"] = "Login";
            string response = postRequest("http://alanwake.phpbb8.de/ucp.php?mode=login", postData);

            Regex regex = new Regex("<div class=\"error\">(?<ErrorMsg>.+?)</div>");
            Match errorMatch = regex.Match(response);
            if (errorMatch != null)
                MessageBox.Show(errorMatch.Groups["ErrorMsg"].Value);
            else
                MessageBox.Show("Erfolgreich angemeldet");
        }
    }
}


ps. Ich wollte dieses Projekt nur machen um neue Kenntnisse zu bekommen, wie schon sagte, ich bin Anfänger und habe so ein Projekt noch nie zuvor gemacht :(

gruß Alan


AlanWake - Mo 23.08.10 15:59

Habe es herausgefunden, lang an diesen Zeilen:


C#-Quelltext
1:
2:
3:
            postData["username"] = "(Admin)";
            postData["password"] = "(******)";
            postData["login"] = "Login";


Richtig ist es aber so:


C#-Quelltext
1:
2:
3:
            postData["username"] = "Admin";
            postData["password"] = "******";
            postData["login"] = "Login";


Nur jetzt habe ich das Problem, das in der MessageBox kein Erfolgreich angemeldet steht, sondern nur eine leere Messagebox erscheint !

gruß Alan


Trashkid2000 - Mo 23.08.10 16:32

user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Nur jetzt habe ich das Problem, das in der MessageBox kein Erfolgreich angemeldet steht, sondern nur eine leere Messagebox erscheint !


Tja, das liegt dann wohl daran, dass im Seitenquelltext wohl immer eine
<div class="error"> ist. Sonst würde es keinen Treffer geben. Und die MessageBox ist leer, weil da wohl im NICHT-Fehlerfall kein Wert drin steht. Also musst Du mal schauen, wie der Seitenquelltext aussieht, und an was Du eine ordnungsgemäße Anmeldung ausmachen kannst.

LG, Marko


AlanWake - Mo 23.08.10 18:52

Ich habe den Quelltext nach <div class und error durchsucht aber ihrgendwie verstehe ich nicht nach was ich genau suchen muss, tut mir leid, kannst du mir da helfen :?:

Mein Quelltext:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="de" xml:lang="de" xmlns:v="urn:schemas-microsoft-com:vml">
<head>

<meta http-equiv="content-type" content="text/html; charset=UTF-8" /><meta http-equiv="content-style-type" content="text/css" /><meta http-equiv="content-language" content="de" /><meta http-equiv="imagetoolbar" content="no" /><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta name="title" content="Mein phpBB Forum :: Login" /><meta name="description" lang="de" content="Mein phpBB Forum :: Login : Eine Beschreibung des Forums." /><meta name="keywords" content="des, Forums, Beschreibung, Eine, phpBB, Forum, Login, Mein" /><meta name="robots" content="index,follow,noarchive" /><link rel="shortcut icon" href="http://www.phpbb8.de/images/favicon.ico" />

<title>Mein phpBB Forum :: Login • Persönlicher Bereich</title>

<!--
phpBB style name: prosilver
Original author: Tom Beddard ( http://www.subBlue.com/ )
Modified by: Dennis Becker ( http://www.phpbb8.de/ )
-->
<script type="text/javascript">
// <![CDATA[
var jump_page = 'Gib die Nummer der Seite an, zu der du gehen möchtest.:'; var on_page = ''; var per_page = ''; var base_url = ''; var style_cookie = 'phpBBstyle'; var style_cookie_settings = '; path=/'; var onload_functions = new Array(); var onunload_functions = new Array(); var seo_delim_start = '-'; var seo_static_pagination = 'page'; var seo_ext_pagination = '.html'; 

function find_username(url) {
popup(url, 760, 570, '_usersearch'); return false; }

window.onload = function() { for (var i = 0; i < onload_functions.length; i++) { eval(onload_functions[i]); }
}
window.onunload = function() { for (var i = 0; i < onunload_functions.length; i++) { eval(onunload_functions[i]); }
}
// ]]>
</script>
<script type="text/javascript" src="http://img.userboard.org/styles/prosilver/template/styleswitcher.js"></script>
<script type="text/javascript" src="http://img.userboard.org/styles/prosilver/template/forum_fn.js"></script><link href="http://img.userboard.org/styles/prosilver/theme/print.css" rel="stylesheet" type="text/css" media="print" title="printonly" /><link href="./style.php?amp;id=1&lang=de" rel="stylesheet" type="text/css" media="screen, projection" /><link href="http://img.userboard.org/styles/prosilver/theme/normal.css" rel="stylesheet" type="text/css" title="A" /><link href="http://img.userboard.org/styles/prosilver/theme/medium.css" rel="alternate stylesheet" type="text/css" title="A+" /><link href="http://img.userboard.org/styles/prosilver/theme/large.css" rel="alternate stylesheet" type="text/css" title="A++" />

<link rel="alternate" type="application/atom+xml" title="Feed - Mein phpBB Forum" href="http://alanwake.phpbb8.de/feed.php" />
<link rel="alternate" type="application/atom+xml" title="Feed - Alle Foren" href="http://alanwake.phpbb8.de/feed.php?mode=forums" />
<script type="text/javascript" src="http://img.userboard.org/styles/prosilver/template/styleswitcher.js"></script>

</head>
<body id="phpbb" class="section-ucp ltr"><div id="wrap"> <a id="top" name="top" accesskey="t"></a><div id="page-header"><div class="headerbar"><div class="inner"><span class="corners-top"><span></span></span><div id="site-description"> <a href="./forum.php" title="Forum" id="logo"><img src="http://img.userboard.org/styles/prosilver/imageset/site_logo.gif" width="139" height="52" alt="" title="" /></a>
<h1>Mein phpBB Forum</h1>
<p>Eine Beschreibung des Forums.</p></div><span class="corners-bottom"><span></span></span></div></div><div id="tabs" style="margin: 3px 0 -1px 7px;">
<ul><li><a href="./portal.php" title="Portal"><span>Portal</span></a></li><li><a href="./forum.php"><span>Forum</span></a></li><li><a href="./gallery/" title="Bilder Galerie"><span>Galerie</span></a></li><li><a href="./arcade.php" title="Spiele hier deine Lieblingsspiele und sichere dir die Highscores. Onlinespiele bis der Arzt kommt!"><span>Onlinespiele</span></a></li><li><a href="./dl/" title="Downloads"><span>Downloads</span></a></li><li><a href="./calendar.php" title="Kalender"><span>Kalender</span></a></li><li><a href="http://alanwake.phpbb8.de/search.php" onmouseover="Tip('<div style=\'padding:2px 15px;\'><form action=\'http://alanwake.phpbb8.de/search.php\' method=\'post\' id=\'search\'><h2>Suche nach:<\/h2><input name=\'keywords\' id=\'keywords\' type=\'text\' maxlength=\'128\' title=\'Suche nach Begriffen\' style=\'width:70%;\' class=\'inputbox search\' value=\'\' \/> <input class=\'button1\' value=\'Go\' type=\'submit\'><br><div style=\'padding:4px;\'>Anzeigen als: <label for=\'sposts\'><input id=\'sposts\' name=\'sr\' value=\'posts\' type=\'radio\'> Beiträge<\/label><label for=\'stopics\'><input id=\'stopics\' name=\'sr\' value=\'topics\' checked=\'checked\' type=\'radio\'> Themen<\/label><\/div><div style=\'padding:4px;\'>Durchsuche: <label for=\'sforum\'><input id=\'sforum\' name=\'over\' value=\'forum\' checked=\'checked\' type=\'radio\'> Forum<\/label> <label for=\'sgoogle\'><input id=\'sgoogle\' name=\'over\' value=\'google\' type=\'radio\'> Google<\/label><\/div><hr class=\'dashed\'><div style=\'text-align:center;\'><a href=\'http://alanwake.phpbb8.de/search.php\' title=\'Zeigt die erweiterten Suchoptionen an\'>Erweiterte Suche<\/a><\/div><\/form><\/div>', CLOSEBTN, true, STICKY, true, ABOVE, false, CENTERMOUSE, true);" onmouseout="UnTip()" title="Zeigt die erweiterten Suchoptionen an"><span>Suche</span></a></li><li><a href="./faq.php" title="Häufig gestellte Fragen"><span>FAQ</span></a></li></ul></div><div class="navbar"><div class="inner"><span class="corners-top"><span></span></span>

<ul class="linklist navlinks">
<li class="icon-home"><a href="./forum.php" accesskey="h">Forum</a> </li><li class="rightside"><a href="#" onclick="fontsizeup(); return false;" class="fontsize" title="Ändere Schriftgröße">Ändere Schriftgröße</a></li><li class="rightside"></li>
</ul>
<ul class="linklist rightside">
<li class="icon-calendar"><a href="./calendar.php" title="Kalender">Kalender</a></li><li class="icon-ucp"><a href="./arcade.php" title="Spiele hier deine Lieblingsspiele und sichere dir die Highscores. Onlinespiele bis der Arzt kommt!">Onlinespiele</a></li><li class="icon-faq"><a href="./faq.php" title="Häufig gestellte Fragen">FAQ</a></li><li class="icon-register"><a href="./ucp.php?mode=register">Registrieren</a></li><li class="icon-logout"><a href="./ucp.php?mode=login" title="Login" accesskey="x">Login</a></li>
</ul><span class="corners-bottom"><span></span></span></div></div></div><a name="start_here"></a><div id="page-body">

<form action="./ucp.php?mode=login&redirect=ucp.php%3Fmode%3Dlogin" method="post" id="login"><div class="panel"><div class="inner"><span class="corners-top"><span></span></span><div class="content">
<h2>Login</h2><fieldset class="fields1">

<dl><dt><label for="username">Benutzername:</label></dt><dd><input type="text" tabindex="1" name="username" id="username" size="25" value="" class="inputbox autowidth" /></dd></dl>
<dl><dt><label for="password">Passwort:</label></dt><dd><input type="password" tabindex="2" id="password" name="password" size="25" class="inputbox autowidth" /></dd><dd><a href="./ucp.php?mode=sendpassword">Ich habe mein Passwort vergessen</a></dd><dd><a href="./ucp.php?mode=resend_act">Die Aktivierungs-E-Mail erneut senden</a></dd>
</dl>

<dl>
<dd><label for="autologin"><input type="checkbox" name="autologin" id="autologin" tabindex="4" /> Mich bei jedem Besuch automatisch anmelden</label></dd><dd><label for="viewonline"><input type="checkbox" name="viewonline" id="viewonline" tabindex="5" /> Meinen Online-Status während dieser Sitzung verbergen</label></dd></dl>

<dl><dt> </dt><dd><input type="hidden" name="redirect" value="index.php" />

<input type="hidden" name="sid" value="26aa75ed54ec5bad75e7b9b8c323569f" />
<input type="submit" name="login" tabindex="6" value="Login" class="button1" /></dd></dl>
</fieldset>
</div><span class="corners-bottom"><span></span></span></div></div><div class="panel"><div class="inner"><span class="corners-top"><span></span></span><div class="content">
<h3>Registrieren</h3>
<p>Du musst in diesem Forum registriert sein, um dich anmelden zu können. Eine Anmeldung ist in wenigen Augenblicken erledigt und ermöglicht dir, auf weitere Funktionen zuzugreifen. Die Board-Administration kann registrierten Benutzern auch zusätzliche Berechtigungen zuweisen. Beachte bitte unsere Nutzungsbedingungen und die verwandten Regelungen, bevor du dich registrierst. Bitte beachte auch die jeweiligen Forenregeln, wenn du dich in diesem Board bewegst.</p><p><strong><a href="./ucp.php?mode=terms">Nutzungsbedingungen</a> | <a href="./ucp.php?mode=privacy">Datenschutzrichtlinie</a></strong></p><hr class="dashed" />
<p><a href="./ucp.php?mode=register" class="button2">Registrieren</a></p></div><span class="corners-bottom"><span></span></span></div></div>
</form></div><div id="page-footer"><div class="navbar"><div class="inner"><span class="corners-top"><span></span></span>
<ul class="linklist"><li class="icon-home"><a href="./forum.php" accesskey="h">Forum</a></li><li class="rightside"><a href="./groups.php">Gruppen</a> • <a href="http://alanwake.phpbb8.de/the-team.html">Das Team</a> • <a href="./ucp.php?mode=delete_cookies">Alle Cookies des Boards löschen</a> • Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]</li></ul>

<span class="corners-bottom"><span></span></span></div></div><div class="copyright">© <a href="http://www.phpbb.com/">phpBB</a> » phpBB3 Forum von <a href="http://www.phpbb8.de/">phpBB8.de</a> <!-- // --><script type="text/javascript" src="http://www.phpbb8.de/abuse/forum.js"></script> <a href="http://www.phpbb8.de/"><img src="http://img.userboard.org/images/plus.gif" align="bottom" border="0" /></a> <a href="../archive/">Archiv</a> | <a href="http://www.phpbb8.de/forum_melden.phpbb3" onmouseover="Tip('<div style=\'line-height:20px;\'>Verantwortlich f&uuml;r den Inhalt eines Beitrags ist der jeweilige Autor.<br>Informieren Sie die Administratoren und/oder Moderatoren im Forum sollten Sie rechtswidrige Inhalte finden.<br>&#187; <a href=\'..\/the-team.html\' style=\'color:#105289;\'>Das Team<\/a><br>&#187; <a href=\'..\/web.php?mode=contact\/\' style=\'color:#CC0000;\'>Kontakt<\/a><br><hr>&#187; <a href=\'..\/ucp.php?mode=terms\' style=\'color:#105289;\'>Nutzungsbedingungen<\/a><br>&#187; <a href=\'..\/ucp.php?mode=privacy\' style=\'color:#105289;\'>Datenschutzrichtlinie<\/a><br><hr>Das Forum wird zur Verf&uuml;gung gestellt von phpbb8.de<br>&#187; <a href=\'http://www.phpbb8.de\' style=\'color:#105289;\'>Kostenloses phpbb3 Forum erstellen<\/a><br>&#187; <a href=\'http://www.phpbb8.de/forum_melden.phpbb3\' style=\'color:#CC0000;\'>Regelversto&szlig; melden!<\/a><br>&#187; <a href=\'http://www.phpbb8.de/support.phpbb3?like=alanwake\' style=\'color:#105289;\'>Impressum<\/a><br><\/div>', STICKY, true, WIDTH, 425, CLICKCLOSE, true, PADDING, 8, ABOVE, true);" onmouseout="UnTip()" onclick="return false;">Kontakt & Rechtliches</a> <a href="http://www.userboard.org/" title="UserBoard: Free Forums"><img src="http://img.userboard.org/images/forum-icon-1.png" align="absbottom" border="0" alt="free forum hosting" /></a><!-- // -->

</div></div></div><div> <a id="bottom" name="bottom" accesskey="z"></a>
<img src="./cron.php?cron_type=tidy_sessions" width="1" height="1" alt="cron" />
</div><a href="http://www.userboard.org/"><img src="http://www.gooof.de/s/showCounter.php?stealth" alt="web tracker" border="0" width="2" height="2" /></a></body></html>


gruß Alan


jaenicke - Mo 23.08.10 19:59

Also ein schneller Überflug über den Quelltext sagt mir, dass das die Loginseite ist. Schließlich werden dort Benutzername und Passwort abgefragt. Wenn das also deine Ergebnisseite ist, dann ist etwas beim Login schiefgegangen.


Trashkid2000 - Mo 23.08.10 20:01

@jaenicke Ja, das ist die Login-Seite

Ok, sorry, war mein Fehler. Hatte mich mal testweise bei Deinem Forum angemeldet, um dann festzustellen, dass das error-Div bei erfolgreicher Anmeldung nicht vorhanden ist. Man muss einfach nur den Match auf Success prüfen.

So müsste es also nun aussehen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
Regex regex = new Regex("<div class=\"error\">(?<ErrorMsg>.+?)</div>");
Match errorMatch = regex.Match(response);
if (errorMatch != null && errorMatch.Success)
  MessageBox.Show(errorMatch.Groups["ErrorMsg"].Value);
else
  MessageBox.Show(String.Format("Erfolgreich als {0} angemeldet", postData["username"]));


Wieder was gelernt :)

Helfe mal ganz gerne, um die Gedanken von den Sachen auf Arbeit frei zu bekommen.

LG, Marko


AlanWake - Mo 23.08.10 20:12

Na toll,
ich wollte den Code gerade ausprobieren, da bekomme ich die Fehlermeldung das ich die Maximale Anzahl an LogIn Versuchen überschritten habe :evil:

@ Trashkid2000: Ist es ihrgendwie möglich diesen Fehler mit dem Code zu unterdrücken :? :?:

gruß Alan


Trashkid2000 - Mo 23.08.10 20:17

:lol: Lustig

Nee, kannst Du nicht, da es serverseitig ist.
Da kannst Du Dir warscheinlich nur 'ne neue IP besorgen. Cookies dürften ja keine da sein, wenn die Abfrage über ein Programm kam (oder wo??)


AlanWake - Mo 23.08.10 20:21

Ich habe alles versucht !

Ich habe meine Verbindung deaktiviert/aktiviert und das selbe auch mit der Lan Verbindung gemacht aber stendig kommt die selber Fehlermeldung :cry:

Gruß Alan

ps. Ich mache denn LogIn Versuch über den Debugging :?


jaenicke - Mo 23.08.10 20:26

user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe alles versucht !
Dann freu dich doch, dass du ein so schlaues Forum hast, dass es doch sogar immer wieder erkennt. :mrgreen:

user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe meine Verbindung deaktiviert/aktiviert und das selbe auch mit der Lan Verbindung gemacht aber stendig kommt die selber Fehlermeldung :cry:
Hast du einmal den Router einfach herausgezogen ein paar Minuten?

Je nach Provider wird dir aber dennoch innerhalb einer gewissen Zeit wieder die selbe IP zugeteilt.


AlanWake - Mo 23.08.10 20:33

Ich habe den Computer heruntergefahren, ein neues Projekt erstellt, dann wieder eins aber mit einem anderen Namen, aber nichts davon funktioniert, toll :evil:

Da muss es doch irgendetwas geben um das auszuschalten :?:

gruß Alan


Trashkid2000 - Mo 23.08.10 20:45

user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe den Computer heruntergefahren, ein neues Projekt erstellt, dann wieder eins aber mit einem anderen Namen, aber nichts davon funktioniert, toll :evil:

Als Programmierer sollte man immer versuchen, ruhig zu bleiben (auch wenn es manchmal schwer fällt) und zu überlegen, woran etwas scheitert.

Es würde in diesem Fall auch nichts nützen, wenn Du Deinen PC aus dem Fenster schmeisst!! Und dann einen anderen an Deinen Inet-Anschluss anstöpselst. Ich will Dich nicht verarschen :oops:
Das Problem ist die IP.
Hast Du mal versucht, was @jaenicke vorgeschlagen hat: einen Neustart des Routers?


AlanWake - Mo 23.08.10 20:52

Das könnte ich machen aber das kann ich nicht weil mein Router 30 Min. braucht um alles wieder herzustellen, das bedeutet, 30 Min. kein Netz und kein Telefon, wenn in der Zeit ihrgendwas passiert kann ich nicht einmal einen Arzt rufen :lol:

gruß Alan


Trashkid2000 - Mo 23.08.10 21:15

Das dauert aber sehr lange!
Hast Du für Notfälle kein Handy?

Hmm, da hilft dann nur warten, bis Dein Forum Dich wieder akzeptiert. Einfach mal 'ne Nacht drüber schlafen, ist ja eh bald Schlafenszeit!


AlanWake - Mo 23.08.10 21:22

@ Trashkid2000: Ich habe ein Handy aber kein Geld drauf :lol:

gruß Alan

ps. Sorry, hatte vergessen zu schreiben, das bei der Fehlermeldung steht, das ich meine Maximale Anzahl an LogIn Versuchen aufgebraucht habe und jetzt zu jedem Login meine Daten + den Grafikcode eingeben muss !

Ist es möglich den Grafikcode auszuschalten :?:

pps. Schlafenszeit ?
Meine Schlafenszeit ist erst um 4 Uhr Morgens :)


Kha - Mo 23.08.10 21:40

Warum meldest du dich nicht einfach schnell über den Browser an und gibst dieses Captcha ein? Dann sollte der Counter doch wieder zurückgesetzt werden.


AlanWake - Mo 23.08.10 22:59

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Warum meldest du dich nicht einfach schnell über den Browser an und gibst dieses Captcha ein? Dann sollte der Counter doch wieder zurückgesetzt werden.


Ich bin über den Firefox gegangen, habe mich mit meinen Daten eingeloggt und den Grafikcode eingeben.

Hat alles super geklappt beim Firefox aber wenn ich dann versuche über mein Programm mich einzulogen kommt wieder die Fehlermeldung das meine Maximale Anzahl verbraucht wäre :cry:

Gibt es eine Möglichkeit den Grafikcode auszuschalten :?:

Und ist das dann noch mit meinem LogIn Code kompatibel :?:

Gruß Alan


jaenicke - Di 24.08.10 05:43

user profile iconAlanWake hat folgendes geschrieben Zum zitierten Posting springen:
Gibt es eine Möglichkeit den Grafikcode auszuschalten :?:

Und ist das dann noch mit meinem LogIn Code kompatibel :?:
Das hat nix mit deinem Code zu tun, das ist eine Einstellung des Servers sprich des Forums. Das musst du dort in der Administration einstellen.


AlanWake - Mi 25.08.10 20:37

Ich habe den Captcha Code ausgeschaltet und es funktioniert :)

Vielen dank an:

jaenicke
Kha
Yogu
Trashkid2000

das ihr so viel Geduld mit mir hattet ^^

gruß Alan