Что нового

Выдать сообщение при неверном логине или пароле входа на сайт (скрытый режим)

xmel-sera

Новичок
Сообщения
16
Репутация
0
Здравствуйте. Столкнулся с проблеммой. Есть программа. В окно скрипта забивается логин и пароль. Скрипт без браузера входит на сайт, вбивает логин и пароль, получает исходный код страницы, которая располагается после формы входа. Потом из этого кода выдергивает нужные значения, записывает их в массив, и из массива уже присваивает эти значения элементам Label в окне скрипта.
Задача такая.
При вводе неверного пароля прога вылетает с ошибкой типа

Код:
$CTRL_lbl1 = GUICtrlCreateLabel ( $aResult[1], -140, 0, 140, 20)
$CTRL_lbl1 = GUICtrlCreateLabel ( ^ ERROR


Просто на странице после неверного ввода пароля в массив записывается только одно значение $aResult[0], так как больше скрипт ничего не находит кроме ай-пи адреса, который там же и на странице пишется. И который и записывается в этот $aResult[0].

Задача:
Как сделать так чтоб:
Если $aResult[1] нет значения в строке $CTRL_lbl1 = GUICtrlCreateLabel ($aResult[1], -140, 0, 140, 20) то было бы какое то сообщение.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
xmel-sera [?]
Как сделать так чтоб:Если $aResult[1] нет значения в строке $CTRL_lbl1 = GUICtrlCreateLabel ($aResult[1], -140, 0, 140, 20) то было бы какое то сообщение.

Проверить содержимое массива. Если у вас только два значения, можно сделать так.
Код:
If UBound($aResult) = 1 Then GUICtrlCreateLabel ('Пароль неверный!', -140, 0, 140, 20)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
xmel-sera,
Можно, например, еще так:
Код:
Dim $aLabel[3] = ['Test_1', 'Test_2', 'Test_3']

GUICreate('Test', 200, 200)
For $i = 0 To 5
	If $i > UBound($aLabel) - 1 Then
		GUICtrlCreateLabel('Error', 50, 10 + $i * 30, 100, 20)
	Else
		GUICtrlCreateLabel($aLabel[$i], 50, 10 + $i * 30, 100, 20)
	EndIf
Next
GUISetState()
Do
Until GUIGetMsg() = -3
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
А зачем мерить массив? Если пароль введен неверно, то наверняка в исх.коде это будет указано), просто надо поставить поиск этакой строки о неверном пароле) имхо так надежней будет, ежели мерить массив)
 
Автор
X

xmel-sera

Новичок
Сообщения
16
Репутация
0
А можно мне выложить сюда код скрипта чтоб кто-то на конкретном примере показал как это делать?
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
А можно мне выложить сюда код скрипта чтоб кто-то на конкретном примере показал как это делать?
C этого, желательно, надо начинать ;)
 
Автор
X

xmel-sera

Новичок
Сообщения
16
Репутация
0
А зачем мерить массив? Если пароль введен неверно, то наверняка в исх.коде это будет указано), просто надо поставить поиск этакой строки о неверном пароле) имхо так надежней будет, ежели мерить массив)

В принципе это и есть правильно. На странице точно пишет что пароль есть неверный. Попробую так. Но и проверять массив на наличие записей тоже может быть полезно, ведь со страницы берётся где-то 15-18 записей, а если есть только одно, или 2, то ясно что что-то не так...
Спасибо. Буду пробовать.


Добавлено:
Сообщение автоматически объединено:

Извините за скорее всего корявый код :-\, недавно начал осваивать AutoIt. Некоторые части кода были взяты с этого форума.

Код:
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <EditConstants.au3>
;#include <GuiStatusBar.au3>




; Перше вікно
$Form0 = GUICreate("IT-Status", 265, 125)
;Opt("GUICoordMode",2)
GUICtrlCreateLabel ("Перевірка стану рахунку абонента Інтертелеком:", 10, 8, 260, 15)
$modem = GUICtrlCreateButton ("Підключення через модем Інтертелеком", 8, 28, 250, 30)
$inet = GUICtrlCreateButton ("Інший тип підключення (без модему)", 8, 60, 250, 30)
;$hStatus = _GUICtrlStatusBar_Create($Form0)
;_GUICtrlStatusBar_SetText($hStatus, @TAB & 'Версія 1.1 від .......', 0)
$About = GUICtrlCreateButton("Про програму...", 65, 96, 140, 21, $BS_BITMAP)
GUISetState (@SW_SHOW, $Form0)
$Form1pos = WinGetPos($Form0)
$Form2 = GUICreate("Про програму...", 265, 186, $Form1pos[0],$Form1pos[1]+155, BitOR($WS_SYSMENU,$WS_CAPTION, $WS_POPUP), $WS_EX_TOOLWINDOW, $Form0)
GUICtrlCreateLabel ("IT-Status"&@CRLF&"Версія 1.1 від /////////2011 р.", 5, 5, 185, 28)
GUICtrlCreateLabel ("E-mail:", 5, 40, 185, 25)
GUICtrlCreateLabel ("[email protected]", 5, 55, 185, 25)
GUICtrlCreateLabel ("[email protected]", 5, 70, 185, 25)
GUICtrlCreateLabel ("IT-Status - зручна програма для відображення інформації про стан рахунку абонента Інтертелеком. Не потребує використання браузера та, що найголовніше - використовує меншу кількість трафіку, яку потребує браузер для відображення цієї ж інформації!", 5, 90, 255, 90)
GUISetState (@SW_HIDE, $Form2)

; вікно Інтертелеком

$FormInter = GUICreate("Стан рахунку абонента Інтертелеком", 350, 510)
Opt("GUICoordMode", 2)
GUICtrlCreateLabel ("Номер:", 30, 30 ,40)
GUICtrlCreateLabel ("Пароль:", 90, -1, 40)
$iphone = GUICtrlCreateInput ("", -125,  -25, 80, 20)
$ipass = GUICtrlCreateInput ("", 50, -20, 80, 20, $ES_PASSWORD)
;GUISetState()
GUICtrlCreateLabel ( "Особовий рахунок.............................:", -270, 10, 190)
GUICtrlCreateLabel ( "Абонент..............................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Номер.................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Стан....................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Пакет..................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Додаткова угода...............................:", -190, 0, 190)
GUICtrlCreateLabel ( "Дата підключення..............................:", -190, 0, 190)
GUICtrlCreateLabel ( "Абонентський стаж...........................:", -190, 0, 190)
GUICtrlCreateLabel ( "Лояльний стаж..................................:", -190, 0, 190)
GUICtrlCreateLabel ( "E-mail...................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "- (грн.)..................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Сальдо................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Передплачені послуги на місяць......:", -190, 0, 190)
GUICtrlCreateLabel ( "Неактивовані бонуси (з 094).............:", -190, 0, 190)
GUICtrlCreateLabel ( "- (МБ)....................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Трафік (Отримано+Передано)...........:", -190, 0, 190)
GUICtrlCreateLabel ( "Тип підключення.................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Спосіб авторизації..............................:", -190, 0, 190)
GUICtrlCreateLabel ( "Трафік даного підключення (Мб).......:", -190, 0, 190)
GUICtrlCreateLabel ( "IP- адреса на даний момент..............:", -190, 0, 190)
GUICtrlCreateLabel ( "Пакетний трафік (залишилось).........:", -190, 0, 190)
GUICtrlCreateLabel ( "", -90, -470, 130)
$iCTRL_btn0 = GUICtrlCreateButton ("Отримати дані", -180, 450, 100, 25)
$iCTRL_btn1 = GUICtrlCreateButton ( "Закрити",  25, -1, 100)
GUISetState (@SW_HIDE, $FormInter)

; вікно іншого типу підключення

$FormOther = GUICreate("Стан рахунку абонента Інтертелеком", 350, 440)
Opt("GUICoordMode", 2)
GUICtrlCreateLabel ( "Номер:", 30, 30 ,40)
GUICtrlCreateLabel ( "Пароль:", 90, -1, 40)

$phone = GUICtrlCreateInput ("", -125,  -25, 80, 20)
$pass = GUICtrlCreateInput ("", 50, -20, 80, 20, $ES_PASSWORD)
;GUISetState()
GUICtrlCreateLabel ( "Особовий рахунок.............................:", -270, 10, 190)
GUICtrlCreateLabel ( "Абонент..............................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Номер.................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Стан....................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Пакет..................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Додаткова угода...............................:", -190, 0, 190)
GUICtrlCreateLabel ( "Дата підключення..............................:", -190, 0, 190)
GUICtrlCreateLabel ( "Абонентський стаж...........................:", -190, 0, 190)
GUICtrlCreateLabel ( "Лояльний стаж..................................:", -190, 0, 190)
GUICtrlCreateLabel ( "E-mail...................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "- (грн.)..................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Сальдо................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Передплачені послуги на місяць......:", -190, 0, 190)
GUICtrlCreateLabel ( "Неактивовані бонуси (з 094).............:", -190, 0, 190)
GUICtrlCreateLabel ( "- (МБ)....................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Трафік (Отримано+Передано)...........:", -190, 0, 190)
GUICtrlCreateLabel ( "Пакетний трафік (залишилось).........:", -190, 0, 190)
GUICtrlCreateLabel ( "", -90, -390, 130)
$CTRL_btn0 = GUICtrlCreateButton ("Отримати дані", -180, 380, 100, 25)
$CTRL_btn1 = GUICtrlCreateButton ("Закрити",  25, -1, 100)
GUISetState (@SW_HIDE, $FormOther)



While 1
   $msg = GUIGetMsg(1)
	Select

		;головна форма
        Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $Form0
            Exit
; про програму
		Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $Form2
                GUISetState(@SW_HIDE, $Form2)
		Case $msg[0] = $About
                GUISetState(@SW_SHOW, $Form2)
		;форма з підключенням через модем
		Case $msg[0] = $iCTRL_btn1
                GUISetState(@SW_HIDE, $FormInter)
        Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $FormInter
                GUISetState(@SW_HIDE, $FormInter)
        Case $msg[0] = $modem
                GUISetState(@SW_SHOW, $FormInter)
		Case $msg[0] = $iCTRL_btn0
				GUICtrlSetState ( $iCTRL_btn0, $GUI_DISABLE )
		
$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
$oHTTP.Open("POST","https://assa.intertelecom.ua/ru/login")
$oHTTP.setTimeouts(5000, 5000, 15000, 15000)
$oHTTP.SetRequestHeader("Accept", "*/*")
$oHTTP.SetRequestHeader("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3")
$oHTTP.SetRequestHeader("Referer","https://assa.intertelecom.ua/ru/statistic")
$oHTTP.SetRequestHeader("Content-Type","application/x-www-form-urlencoded")
$oHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1")
$oHTTP.SetRequestHeader("Host","assa.intertelecom.ua")
$oHTTP.SetRequestHeader("Proxy-Connection", "Keep-alive")
$oHTTP.Send("phone=" & GUICtrlRead($iphone) & "&pass=" & GUICtrlRead($ipass))
$oHTTP.WaitForResponse


MsgBox (0, "Зачекайте...", "Очікування відповіді з сервера", 3)
; отримуємо код сторінки коли ми вже авторизувались
$oHTTP.Open("GET","https://assa.intertelecom.ua/ru/statistic")
$oHTTP.Send()
$oHTTP.WaitForResponse

; пошук необхідних змінних для програми
$sText = $oHTTP.ResponseText
$aTemp = StringRegExp($sText, '(?s)color:.*?;">\s*(.*?)\s*<', 3)
Dim $aResult [UBound($aTemp)]
$j = -1
For $i = 0 To UBound($aTemp) - 1
    If $aTemp[$i] Then
        $j += 1
        $aResult[$j] = $aTemp[$i]
    EndIf
Next
ReDim $aResult[$j + 1]

;MsgBox(0, "Вихід з програми", $oHTTP.ResponseText)
;_ArrayDisplay($aResult)

; виведення інформації у вікно програми
;_ArrayDisplay($aResult)
$CTRL_lbl0 = GUICtrlCreateLabel ( $aResult[0], -85, -445, 140, 20)
$CTRL_lbl1 = GUICtrlCreateLabel ( $aResult[1], -140, 0, 140, 20)
$CTRL_lbl2 = GUICtrlCreateLabel ( $aResult[2], -140, 0, 140, 20)
$CTRL_lbl3 = GUICtrlCreateLabel ( $aResult[3], -140, 0, 140, 20)
$CTRL_lbl4 = GUICtrlCreateLabel ( $aResult[4], -140, 0, 140, 20)
$CTRL_lbl5 = GUICtrlCreateLabel ( $aResult[5], -140, 0, 140, 20)
$CTRL_lbl6 = GUICtrlCreateLabel ( $aResult[6], -140, 0, 140, 20)
$CTRL_lbl7 = GUICtrlCreateLabel ( $aResult[7], -140, 0, 140, 20)
$CTRL_lbl8 = GUICtrlCreateLabel ( $aResult[8], -140, 0, 140, 20)
$CTRL_lbl9 = GUICtrlCreateLabel ( $aResult[9], -140, 0, 140, 20)
$CTRL_lbl10 = GUICtrlCreateLabel ( $aResult[10], -140, 0, 140, 20)
$CTRL_lbl11 = GUICtrlCreateLabel ( $aResult[11], -140, 0, 140, 20)
$CTRL_lbl12 = GUICtrlCreateLabel ( $aResult[12], -140, 0, 140, 20)
$CTRL_lbl13 = GUICtrlCreateLabel ( $aResult[13], -140, 0, 140, 20)
$CTRL_lbl14 = GUICtrlCreateLabel ( $aResult[14], -140, 0, 140, 20)
$CTRL_lbl15 = GUICtrlCreateLabel ( $aResult[15], -140, 0, 140, 20)
$CTRL_lbl16 = GUICtrlCreateLabel ( $aResult[16], -140, 0, 140, 20)
$CTRL_lbl17 = GUICtrlCreateLabel ( $aResult[17], -140, 0, 140, 20)
$CTRL_lbl18 = GUICtrlCreateLabel ( $aResult[18], -140, 0, 140, 20)
$CTRL_lbl19 = GUICtrlCreateLabel ( $aResult[19], -140, 0, 140, 20)
$CTRL_lbl20 = GUICtrlCreateLabel ( $aResult[21], -140, 0, 140, 20)
;_ArrayDisplay($aResult)
;$N = 1
;Dim $aResult[$N] = [1]
;_ArrayDisplay($aResult)
;Dim $aResult[$N]
;_ArrayDisplay($aResult)
;_ArrayDisplay($aResult)
;Введення даних в форму з підключенням іншого типу

				Case $msg[0] = $CTRL_btn0
				GUICtrlSetState ( $CTRL_btn0, $GUI_DISABLE )
				
				$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
				$oHTTP.Open("POST","https://assa.intertelecom.ua/ru/login")
				$oHTTP.setTimeouts(5000, 5000, 15000, 15000)
				$oHTTP.SetRequestHeader("Accept", "*/*")
				$oHTTP.SetRequestHeader("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3")
				$oHTTP.SetRequestHeader("Referer","https://assa.intertelecom.ua/ru/statistic")
				$oHTTP.SetRequestHeader("Content-Type","application/x-www-form-urlencoded")
				$oHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1")
				$oHTTP.SetRequestHeader("Host","assa.intertelecom.ua")
				$oHTTP.SetRequestHeader("Proxy-Connection", "Keep-alive")
				$oHTTP.Send("phone=" & GUICtrlRead($phone) & "&pass=" & GUICtrlRead($pass))
				$oHTTP.WaitForResponse

; отримуємо код сторінки коли ми вже авторизувались


				MsgBox (0, "Зачекайте...", "Очікування відповіді з сервера", 3)
				
				$oHTTP.Open("GET","https://assa.intertelecom.ua/ru/statistic")
				$oHTTP.Send()
				$oHTTP.WaitForResponse	

; пошук необхідних змінних для програми
$sText = $oHTTP.ResponseText
$aTemp = StringRegExp($sText, '(?s)color:.*?;">\s*(.*?)\s*<', 3)
Dim $aResult [UBound($aTemp)]
$j = -1
For $i = 0 To UBound($aTemp) - 1
    If $aTemp[$i] Then
        $j += 1
        $aResult[$j] = $aTemp[$i]
    EndIf
Next
ReDim $aResult[$j + 1]
;_ArrayDisplay($aResult)


; виведення інформації у вікно програми
If UBound($aResult) = 1 Then GUICtrlCreateLabel ('Пароль неверный!', -140, 0, 140, 20)
$CTRL_lbl0 = GUICtrlCreateLabel ( $aResult[0], -88, -375, 140, 20)
$CTRL_lbl1 = GUICtrlCreateLabel ( $aResult[1], -140, 0, 140, 20)
$CTRL_lbl2 = GUICtrlCreateLabel ( $aResult[2], -140, 0, 140, 20)
$CTRL_lbl3 = GUICtrlCreateLabel ( $aResult[3], -140, 0, 140, 20)
$CTRL_lbl4 = GUICtrlCreateLabel ( $aResult[4], -140, 0, 140, 20)
$CTRL_lbl5 = GUICtrlCreateLabel ( $aResult[5], -140, 0, 140, 20)
$CTRL_lbl6 = GUICtrlCreateLabel ( $aResult[6], -140, 0, 140, 20)
$CTRL_lbl7 = GUICtrlCreateLabel ( $aResult[7], -140, 0, 140, 20)
$CTRL_lbl8 = GUICtrlCreateLabel ( $aResult[8], -140, 0, 140, 20)
$CTRL_lbl9 = GUICtrlCreateLabel ( $aResult[9], -140, 0, 140, 20)
$CTRL_lbl10 = GUICtrlCreateLabel ( $aResult[10], -140, 0, 140, 20)
$CTRL_lbl11 = GUICtrlCreateLabel ( $aResult[11], -140, 0, 140, 20)
$CTRL_lbl12 = GUICtrlCreateLabel ( $aResult[12], -140, 0, 140, 20)
$CTRL_lbl13 = GUICtrlCreateLabel ( $aResult[13], -140, 0, 140, 20)
$CTRL_lbl14 = GUICtrlCreateLabel ( $aResult[14], -140, 0, 140, 20)
$CTRL_lbl15 = GUICtrlCreateLabel ( $aResult[15], -140, 0, 140, 20)
$CTRL_lbl16 = GUICtrlCreateLabel ( $aResult[17], -140, 0, 140, 20)

		;форма для іншого типу підключення
		Case $msg[0] = $CTRL_btn1
                GUISetState(@SW_HIDE, $FormOther)

		Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $FormOther
                GUISetState(@SW_HIDE, $FormOther)
        Case $msg[0] = $inet
                GUISetState(@SW_SHOW, $FormOther)

	EndSelect

WEnd
 
Верх