Entwickler-Ecke
Sonstiges (.NET) - vbulletin login check
dan1el - Mi 07.07.10 08:38
Titel: vbulletin login check
hallo !!!
ich hab jetzt min 2 stunden gegogglet und bin auch keine antwort darauf gestoßen.
wie kann ich es machen das er guckt ob passwort stimmt und username wenn es richtig ist msg kommt mit login koreckt?
mfg
dan1el
Moderiert von
Christian S.: Topic aus C# - Die Sprache verschoben am Mi 07.07.2010 um 10:13
Chiller_No.1 - Mi 07.07.10 08:44
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:
| private void btn_login_Click(object sender, EventArgs e) { Dictionary<string, string> userPasswords = new Dictionary<string, string>(); string[] lines = File.ReadAllLines("userpwd.txt"); string usernameInput = textBoxX1.Text; string passwordInput = textBoxX2.Text;
foreach (string line in lines) { string username = line.Split(';')[0]; string password = line.Split(';')[1];
userPasswords.Add(username, password); }
if (userPasswords.ContainsKey(usernameInput)) { if (userPasswords[usernameInput] == passwordInput) { this.DialogResult = DialogResult.OK; this.Close(); } else { MessageBox.Show("Falsches Passwort!"); textBoxX2.Text = ""; } } else { MessageBox.Show("Benutzername nicht vergeben!"); textBoxX2.Text = ""; textBoxX1.Text = ""; } } |
Dann bracuhst du noch die Text Datei userpwd.txt! Darin stehen z.b. die Daten Name;Passwort durch das Semicolon weis der Compiler das ein Passwort beginnt ;) Das dürfte dein Problem ersteinmal lösen :P
mfg chiller
dan1el - Mi 07.07.10 09:05
Danke schonmal
ich habs jetzt so versucht
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:
| 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;
namespace Login_check { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
public void button1_Click(System.Object sender, System.EventArgs e) {
webBrowser1.Document.GetElementById("navbar_username").InnerText = textBox1.Text; webBrowser1.Document.GetElementById("navbar_password").InnerText = textBox2.Text; webBrowser1.Document.Forms[0].InvokeMember("submit"); timer1.Enabled = true; } public void Form1_Load(System.Object sender, System.EventArgs e) {
webBrowser1.Navigate("Website"); Application.DoEvents(); } public void WebBrowser1_DocumentCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e) {
button1.Enabled = true; } public void timer1_Tick(System.Object sender, System.EventArgs e) {
string Quelltext = webBrowser1.DocumentText; if (Quelltext.Contains("Weiterleitung")) { timer1.Enabled = false; MessageBox.Show("Login erfolgreich...."); } else { timer1.Enabled = false; MessageBox.Show("Bitte Eingaben überprüfen..."); } } public void LinkLabel1_LinkClicked(System.Object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e) { System.Diagnostics.Process.Start("Website"); } } } |
nunja nur er macht es nicht wie ich es will ^^
will ja von forum aus das checken lassen
Moderiert von
Christian S.: Quote- durch C#-Tags ersetzt
Chiller_No.1 - Mi 07.07.10 09:14
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| public void button1_Click(System.Object sender, System.EventArgs e) {
webBrowser1.Document.GetElementById("navbar_username").InnerText = textBox1.Text; webBrowser1.Document.GetElementById("navbar_password").InnerText = textBox2.Text; webBrowser1.Document.Forms[0].InvokeMember("submit"); timer1.Enabled = true;
} |
Hier prüft er doch nur den ersten eintrag der txt datei oder täusch ich mich da?
Da sollte auf jeden Fall noch eine Schleife hin.. ;)
C#-Quelltext
1:
| public void timer1_Tick(System.Object sender, System.EventArgs e) |
Öhmm wofür denn einen Timer? :P
C#-Quelltext
1: 2: 3: 4:
| public void LinkLabel1_LinkClicked(System.Object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e) { System.Diagnostics.Process.Start("Website"); } |
Soll die Seite nicht aufgerufen werden falls der Login erfolgreich war? Falls ja solltest du diesen Quellcode hier hinter setzten:
C#-Quelltext
1:
| MessageBox.Show("Login erfolgreich...."); |
mfg chiller ;)
dan1el - Mi 07.07.10 09:49
hmmm ich kriegs nicht hin ^.<
Chiller_No.1 - Mi 07.07.10 09:55
Welchen Teil kriegst du jetzt genau nicht hin? :P
dan1el - Mi 07.07.10 09:59
Diesen teil mit der schleife
timer hab ich weg gemacht.
Chiller_No.1 - Mi 07.07.10 10:07
C#-Quelltext
1: 2:
| Dictionary<string, string> userPasswords = new Dictionary<string, string>(); string[] lines = File.ReadAllLines("userpwd.txt"); |
So hier liest er jede Zeile in der txt Datei un schreibt sie einzeln in den string ein. das sieht dann z.b. so aus
string[0] wäre dann Name1;Passwort1
string[1] wäre dann Name2;Passwort2 undsoweiter...
Um dann NUR den Benuternamen oder NUR das Passwort zu checken ist die Foreach schleife da. Der Benutzername und das Passwort sind dabei durch ein Semicolon getrennt.
C#-Quelltext
1: 2: 3: 4: 5: 6:
| foreach (string line in lines) { string username = line.Split(';')[0]; string password = line.Split(';')[1]; userPasswords.Add(username, password); } |
Hat er dies getan schreibt er jeden Benutzernamen und jedes Passwort einzeln in die vorher angelegte dictionary. Auf diese kann ohne Probleme zugegriffen werden da es ja variablen sind.
Was er dann nurnoch machen muss ist die Prüfung ob die Eingabe mit einem Eintrag in der dictionary übereinstimmt!
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| if (userPasswords.ContainsKey(usernameInput)) { if (userPasswords[usernameInput] == passwordInput) { this.DialogResult = DialogResult.OK; this.Close(); } else { MessageBox.Show("Falsches Passwort!"); textBoxX2.Text = ""; } } else { MessageBox.Show("Benutzername nicht vergeben!"); textBoxX2.Text = ""; textBoxX1.Text = ""; } } |
mfg Chiller ;)
dan1el - Mi 07.07.10 10:18
hmmmm sry wir haben beide von was anderem geredet.
also ich habe so einer art spiel.
und bevor man das spielen kann soll er nickname + pw checken lassen.
aber das alles aus ein vbulletin forum.
deswegen frag ich ja ^^
und andere user sollen ja das pw nicht wissen!!
Chiller_No.1 - Mi 07.07.10 10:22
Hmm.. Ja bin da jetzt auch nich alzu fit ;D Aber die Benutzernamen bzw. Passwörter sollten von einem Server geladen werden oder einer Datenbank die natürlich nicht jeder einlesen kann ;) Aber ich hoffe andere User können dir da auch noch genauer helfen.
mfg chiller
dan1el - So 11.07.10 23:33
pUSH SRY IMMER NOCH NIX GEFUNDEN
Christian S. - So 11.07.10 23:51
Überleg doch einfach mal, was Du ohne Programm machen würdest: Login-Seite aufrufen, Benutzerdaten eingeben, Seite abschicken, gucken ob die "Du bist eingeloggt"-Seite kommt.
Ich würde empfehlen, dass Du mit WebRequest / WebResponse arbeitest. Dann kannst Du die Login-Daten direkt per POST übergeben.
Also, zusammengefasst:
- WebRequest auf die Login-Seite erstellen. Dem WebRequest den Benutzernamen und Passwort direkt als POST-Daten mitgeben. (Vorsicht, ich glaube, vBulletin erwartet MD5-Hashes, musst Du mal recherchieren)
- Den WebResponse daraufhin prüfen, ob eine Anmelde-Bestätigung vorliegt.
Ich denke, mit den Stichworten solltest Du bei entsprechendem Studium der Doku zumindest einen Ansatz selber hinbekommen. Dann kannste Dich ja nochmal melden :-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!