Quote:
Originally Posted by Lumi'
Gehört das zum Thema ? ;)
Schätze nicht. ;3
Irgendwelche Antworten zu meinem Problem ? O:
|
Er hat es in diesem Thema gepostet, also würde ich sagen, dass die (eine) Antwort korrekt ist.
----
Wollte gerade meine Antwort posten, dann sehe ich erst, dass schon eine zweite Seite gibt. Shawn Spencer hat in diesem Sinne schon einmal recht. Sein RegEx ist vermutlich auch effizienter als "(\d+)</span>", deswegen habe ich den gerade mal übernommen. Den Rest hatte ich zufällig schon fertig, weil mir ein gewisser Useroutput recht war - zum Testen.
PHP Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinHttp.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 252, 297, 192, 124)
$Label1 = GUICtrlCreateLabel("Benutzername", 8, 8, 72, 17)
$Label2 = GUICtrlCreateLabel("Passwort", 32, 32, 47, 17)
$Input1 = GUICtrlCreateInput("", 96, 8, 121, 21)
$Input2 = GUICtrlCreateInput("", 96, 32, 121, 21)
$Button1 = GUICtrlCreateButton("Login", 80, 64, 75, 25)
$Button2 = GUICtrlCreateButton("elite*Gold abfragen", 56, 120, 131, 25)
$Edit1 = GUICtrlCreateEdit("", 8, 152, 233, 136)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
Login()
Case $Button2
Login(1)
EndSwitch
WEnd
Func Login($bGold = False)
_ToogleButtons(0)
$hSession = _WinHttpOpen("Mozilla/5.0 (Windows NT 6.0; rv:10.0.1) Gecko/20100101 Firefox/10.0.1")
$hConnect = _WinHttpConnect($hSession, "www.elitepvpers.com")
$sHTML = _WinHttpSimpleRequest($hConnect, "GET", "forum/")
$sHTML = _WinHttpSimpleRequest($hConnect, "POST", "forum/login.php?do=login", "", "vb_login_username=" & GUICtrlRead($Input1) & "&vb_login_password=" & GUICtrlRead($Input2) & "&cookieuser=1&s=&securitytoken=guest&do=login")
; Login fehlgeschlagen
If Not StringInStr($sHTML, "<strong>Thank you for logging in, ") Then
_Output("Login fehlgeschlagen")
_ToogleButtons(1)
Return 0
EndIf
If Not $bGold Then
_ToogleButtons(1) ; Weiter nur, wenn $bGold = True
_Output("Login erfolgreich")
Return 1
EndIf
; Neue Seite laden (möglichst wenig Content)
$sHTML = _WinHttpSimpleRequest($hConnect, "GET", "forum/faq.php")
$aReturn = StringRegExp($sHTML, '<span class="gold">([^<]+)', 3)
; Buttons wieder aktivieren
_ToogleButtons(1)
If Not IsArray($aReturn) Then Return 0 * _Output("elite*Gold nicht gefunden")
_Output("elite*Gold von "&GUICtrlRead($Input1) &": " & $aReturn[0])
Return 1
EndFunc ;==>GoldAbfrage
Func _ToogleButtons($bNewState = -1)
Local $fNewState = $GUI_DISABLE
If $bNewState = -1 Then $bNewState = BitAND(GUICtrlGetState($Button1), $GUI_DISABLE)
If $bNewState Then
$fNewState = $GUI_ENABLE
EndIf
GUICtrlSetState($Button1, $fNewState)
GUICtrlSetState($Button2, $fNewState)
EndFunc
Func _Output($str)
Return GUICtrlSetData($Edit1, $str & @CRLF, "1")
EndFunc
Übrigens hattest du die Buttons vertauscht.
Edit: Übrigens, wenn elitepvpers das Ergebnis des Einloggens im HTTP-Header anzeigt, ginge das alles vermutlich schneller, aber ich hatte gerade keine Lust, das zu überprüfen.