[HELP]Login

12/29/2012 16:45 EngelEatos#1
hallo,

ich wollte einen login für diese [Only registered and activated users can see links. Click Here To Register...] schreiben.

funktioniert aber irgendwie nicht^^

Code:
$IE = _IECREATEEMBEDDED()
   $Bot = GUICreate("Form1", 800, 800)
   GUICtrlCreateObj($IE, 0, 0, 800, 800)
   GUISetState(@SW_SHOW)
   _IENAVIGATE($IE,"www.skorpion-mt2.com/?s=usercp");https://www.skorpion-mt2.com/?s=usercp
   _IELOADWAIT($IE)
   $Loginform = _IEFORMGETOBJBYNAME($IE, "left_content")
   $IDIn = _IEGetObjByName($IE, "userid")
   $PWIn = _IEGetObjByName($IE, "userpass")
oder

Code:
$IE = _IECREATEEMBEDDED()
   $Bot = GUICreate("Form1", 800, 800)
   GUICtrlCreateObj($IE, 0, 0, 800, 800)
   GUISetState(@SW_SHOW)
   _IENAVIGATE($IE,"www.skorpion-mt2.com/?s=usercp");https://www.skorpion-mt2.com/?s=usercp
   _IELOADWAIT($IE)
   $Loginform = _IEFORMGETOBJBYNAME($IE, "left_content")
   $IDIn = _IEGetObjById($IE, "text")
   $PWIn = _IEGetObjById($IE, "passwort")
funktioniert beides nicht^^

ich hägen im moment bei diesem befehl

Code:
$IDIn = _IEGetObjById($IE, "text")
   $PWIn = _IEGetObjByID($IE, "passwort")
da die id nicht in dem seitenquell text angegeben ist^^

hoffe jmd kann mir helfen

mfg
12/29/2012 16:51 BladeTiger12#2
Hier
Code:
#include <IE.au3>
#include <GUIConstants.au3>
$IE = _IECREATEEMBEDDED()
$Bot = GUICreate("AutoLogin", 800, 800)
GUICtrlCreateObj($IE, 0, 0, 800, 800)
_IENAVIGATE($IE,"www.skorpion-mt2.com/?s=usercp");https://www.skorpion-mt2.com/?s=usercp
_IELOADWAIT($IE)
GUISetState(@SW_SHOW)
$IDIn = _IEGetObjByName($IE, "userid")
$PWIn = _IEGetObjByName($IE, "userpass")
$Submit = _IEGetObjByName($IE , "submit")
_IEFormElementSetValue($IDIn , "ID")
_IEFormElementSetValue($PWin , "PW")
_IEAction($Submit , "click")

While 1
	$msg = GUIGetMsg()
	Switch $msg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd
01/07/2013 17:29 EngelEatos#3
danke funktioniert^^

noch eine frage^^

ich habe 2 buttons, diese sind vollkommen identisch bis auf die value
ich möcht beide nacheinander drücken:

Code:
<center><input class="vote1" type="submit" name="submit" value="Vote Seite 1"/></center>
Code:
<center><input class="vote1" type="submit" name="submit" value="Vote Seite 2" /></center>
ich habe schon den befehl _IEGetObjByValue ausprobiert :D den gibts aber anscheinend nicht^^

wie kann ich die buttons unterscheiden?

mfg
01/08/2013 03:04 BladeTiger12#4
So hier habe es endlich hinbekommen:
Code:
#include <IE.au3>
#include <GUIConstants.au3>
$IE = _IECREATEEMBEDDED()
$Bot = GUICreate("AutoLogin", 800, 800)
GUICtrlCreateObj($IE, 0, 0, 800, 800)
_IENAVIGATE($IE,"www.skorpion-mt2.com/?s=usercp");https://www.skorpion-mt2.com/?s=usercp
_IELOADWAIT($IE)
GUISetState(@SW_SHOW)

$IDIn = _IEGetObjByName($IE, "userid")
$PWIn = _IEGetObjByName($IE, "userpass")
$Submit = _IEGetObjByName($IE , "submit")
_IEFormElementSetValue($IDIn , "")
_IEFormElementSetValue($PWin , "")
_IEAction($Submit , "click")

_IENavigate($IE , "http://www.skorpion-mt2.com/index.php?s=vote")
$colInputs = _IETagNameGetCollection($IE,"input") ; Get collection of input tags
$cols = @extended
$i = 3
For $oInputs In $colInputs
	If $i = 3 Then
		$i = 0
	Else
		$Names = _IEGetObjByName($IE , $oInputs.name)
		$Names1 = _IEGetObjByName($IE , $oInputs.name , 1)
		_IEAction($Names , "click")
		_IEAction($Names1 , "click")
		ExitLoop
	EndIf
Next

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd
01/08/2013 13:22 lolkop#5
muss das ganze wirklich über den ie laufen?
viel schöner könnte man das ganze gleich komplett über tcp befehle lösen.
01/08/2013 14:41 EngelEatos#6
Quote:
Originally Posted by lolkop View Post
muss das ganze wirklich über den ie laufen?
viel schöner könnte man das ganze gleich komplett über tcp befehle lösen.
wie könnte das man über tcp lösen?

mfg
01/08/2013 14:50 lolkop#7
einfach den traffic mitloggen, welcher über deinen browser gesendet/empfangen wird, und rekonstruieren.

codeaufbau:
Code:
TCPStartup()
$socket = TCPConnect(<adress>)

[Schleife]
	TCPSend($socket, <anfrage>)
	[Do]
		$antwort = TCPRecv($socket, 1024)
	[Until $antwort ist komplett]
[/Schleife]

TCPCloseSocket($socket)
TCPShutdown()
01/08/2013 15:04 EngelEatos#8
Quote:
Originally Posted by lolkop View Post
einfach den traffic mitloggen, welcher über deinen browser gesendet/empfangen wird, und rekonstruieren.

codeaufbau:
Code:
TCPStartup()
$socket = TCPConnect(<adress>)

[Schleife]
	TCPSend($socket, <anfrage>)
	[Do]
		$antwort = TCPRecv($socket, 1024)
	[Until $antwort ist komplett]
[/Schleife]

TCPCloseSocket($socket)
TCPShutdown()
sry aber ich habe grad keinen plan was dieser code tut/mir mitteilen will

ich hab mich mit tcp noch nicht beschäftig & bin ein absolurter newbie in autoit

mfg
01/08/2013 15:08 Njahs#9
Quote:
Originally Posted by EngelEatos View Post
wie könnte das man über tcp lösen?

mfg
[Only registered and activated users can see links. Click Here To Register...]
01/08/2013 16:20 EngelEatos#10
Code:
#include "WebTcp.au3"

_WebTcp_Startup()
$oWebTcp = _WebTcp_Create(False)

$sBenutzername = InputBox("AutoLogin", "Bitte gib deinen Benutzernamen ein:")
$sPasswort = InputBox("AutoLogin ", "Bitte gib dein Passwort ein:", "", "*")

$oWebTcp.Navigate("http://www.skorpion-mt2.com/index.php?s=usercp", "userid=" & $sBenutzername & "&userpass=" & $sPasswort & "&submit=Login")


If StringInStr($oWebTcp.Body, "ausloggen") Then
    MsgBox(64, "Info", "Login erfolgreich!")
Else
    MsgBox(48, "Info", "Login fehlgeschlagen!")
EndIf

$oWebTcp.Navigate("http://www.skorpion-mt2.com/?s=vote", "submit=Vote+Seite+1")
If StringInStr($oWebTcp.Body, "Voten") Then
    MsgBox(64, "Info", "Vote erfolgreich!")
Else
    MsgBox(48, "Info", "Vote fehlgeschlagen!")
 EndIf
 
$oWebTcp.Navigate("http://www.skorpion-mt2.com/?s=vote")
 If StringInStr($oWebTcp.Body, "Mit deiner Ip wurde bereits mit einem anderem Account gevotet.") Then
    MsgBox(64, "Info", "Du kannst erst wieder in 8 h voten")
 EndIf
 
$oWebTcp.Navigate("http://www.skorpion-mt2.com/?s=vote", "submit=Vote+Seite+2")
If StringInStr($oWebTcp.Body, "Voten") Then
    MsgBox(64, "Info", "Vote2 erfolgreich!")
Else
    MsgBox(48, "Info", "Vote2 fehlgeschlagen!")
 EndIf
_WebTcp_Shutdown()

ich habe es jetz geschafft, dass er sich einloggt & votet, aber er votet auch wenn man ein falsches pw/id eingibt, Wie kann man das einstellen, dass er abbrechen soll wenn man was falsches eingibt?

mfg
01/08/2013 18:37 Njahs#11
Quote:
Originally Posted by EngelEatos View Post
ich habe es jetz geschafft, dass er sich einloggt & votet, aber er votet auch wenn man ein falsches pw/id eingibt, Wie kann man das einstellen, dass er abbrechen soll wenn man was falsches eingibt?

mfg
[Only registered and activated users can see links. Click Here To Register...] ;)
01/08/2013 19:03 BladeTiger12#12
Quote:
Originally Posted by Njahs View Post
[Only registered and activated users can see links. Click Here To Register...] ;)
Oder eine Func erstellen und Return machen / Error setzen.
Exit beendet das Programm ja komplett.(Außerhalb es soll so sein)
01/08/2013 19:49 Achat#13
Quote:
Originally Posted by EngelEatos View Post


ich habe es jetz geschafft, dass er sich einloggt & votet, aber er votet auch wenn man ein falsches pw/id eingibt, Wie kann man das einstellen, dass er abbrechen soll wenn man was falsches eingibt?

mfg
Hier mal etwas Pseudocode

Code:
;Gui-Loop

Case $ButtonStart
	_Main()
	If @error Then
		Switch @error
			Case 1
				MsgBox(48, 'Fehler', 'Aktion 1 fehlgeschlagen')
			Case 2
				MsgBox(48, 'Fehler', 'Aktion 2 fehlgeschlagen')
			Case 3
				MsgBox(48, 'Fehler', 'Aktion 3 fehlgeschlagen')
		EndSwitch
	EndIf

	;/Gui-Loop

;### Tidy Error -> case Not closed before "Func" statement.
;### Tidy Error -> "func" cannot be inside any IF/Do/While/For/Case/Func statement.
	Func _Main()
		;Aktion 1
		If StringInStr(...) Then
			;Falsch Anmelden und die Fehlermeldung raussuchen, wenn diese im Quellcode enthalten ist, dann ist die Anmeldung fehlgeschlagen // Richtig anmelden und dann einen String heraussuchen, bei epvp wäre das z.B. "Willkommen,"
			Return SetError(1, 0, 0) ;Setzt @error auf 1 und beendet die Funktion
		EndIf
		;Aktion 2
		;Fehlerprüfung, ... If .... Then
		;Return SetError(2,0,0)
		;EndIf
		;Aktion 3
		;Fehlerprüfung If ... Then
		;Return Seterror(3,0,0)
		;Endif
	EndFunc   ;==>_Main

;### Tidy Error -> case is never closed in your script.
MfG