Работа с Winsoc (заполнение формы)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Shurik90
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 15.06.2003 (Вс) 23:49

Работа с Winsoc (заполнение формы)

Сообщение Shurik90 » 12.10.2004 (Вт) 10:41

Как послать на какую либу удалённую форму имя и пароль? А потом ещё подтвердить это кнопкой Submit?

Т.е. есть страничка на HTML с двумя текстовыми полями и кнопкой "Войти":
Код: Выделить всё
<input type=text class=long name=Login tabindex=1 value=>

<input type=password class=long name=Password tabindex=3 value=>

<input type=submit tabindex=5 value=" Войти ">


Как заполнить поля и нажать кнопку не загружая страничку?

Буду очень благодарен за помощь.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.10.2004 (Вт) 11:23

А какой метод отправки данных, GET или POST? В любом случае, оба варианта описаны в FAQ (на старом форуме, old.vbstreets.ru).
Lasciate ogni speranza, voi ch'entrate.

Shurik90
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 15.06.2003 (Вс) 23:49

Сообщение Shurik90 » 12.10.2004 (Вт) 22:36

Метод Post.
Сорри, пропустил первую строчку.
Код: Выделить всё
<form name=Auth method=post action=чего то там>


alibek, старый форум почему то весь пустой, куда не заходишь пишет "No topix found". Так что, если не трудно, дай ссылку или описание.
Спасибо.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.10.2004 (Ср) 0:03

Не пугай меня так! Я уж думал правда старый форума накрылся...

Просто из списочка-то выбери не "last 30 days", а "Показать усе".
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Shurik90
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 15.06.2003 (Вс) 23:49

Сообщение Shurik90 » 13.10.2004 (Ср) 0:50

Спасибо, нашёл что надо.
Только вот пара вопросов:
1)Какие значения я здесь пишу? Те которые в input или те которые в form?
Код: Выделить всё
Parametrs="параметр1=значение&параметр2=значение" 'сохраняем параметры в 'переменной

---------
2) В чём разница между адрес_скрипта HTTP и имя_сервера? Можно пример?
Код: Выделить всё
Winsock1.SendData "POST /адрес_скрипта HTTP/1.1" & vbCrLf
Winsock1.SendData "Host: имя_сервера" & vbCrLf


Заранее благодарен.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.10.2004 (Ср) 10:52

1. Полагаю, все что в Form определены (ведь могут быть не только INPUT, но и LIST).
2. Адрес это адрес, а имя сервера это имя сервера. До первого слэша - имя хоста, после - путь адреса.
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.10.2004 (Ср) 12:37

До первого из слэшей после http://
А то ещё решат, что http: - это хост, а то что после - адрес... :-)
Изображение

Shurik90
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 15.06.2003 (Вс) 23:49

Сообщение Shurik90 » 13.10.2004 (Ср) 13:40

Т.е. если это http://www.rambler.ru, то
Код: Выделить всё
Winsock1.SendData "Host: www.rambler.ru" & vbCrLf

Так? А как быть с адресом скрипта? Оставить пустым?
Код: Выделить всё
Winsock1.SendData "POST / HTTP/1.1" & vbCrLf



1. Полагаю, все что в Form определены (ведь могут быть не только INPUT, но и LIST).

alibek,
Но ведь есть
<form name=Auth>
и
<input name=Login>

Какой из них писать в париметры?
Может кто-то делал похожее или видел где-то?

Заранее спасибо за ответы.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.10.2004 (Ср) 13:53

Я тебя немного не так понял. Параметры это то, что _внутри_ формы, т.е. INPUT.
А адрес скрипта -- куда ты обращаешься? Например в адреса http://bbs.vbstreets.ru/viewtopic.php?t=10281 хост это http://bbs.vbstreets.ru, а /viewtopic.php - адрес скрипта (а ?t=10281 - параметр t равный 10281).
Lasciate ogni speranza, voi ch'entrate.

Shurik90
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 15.06.2003 (Вс) 23:49

Сообщение Shurik90 » 13.10.2004 (Ср) 14:10

ОК.
1) Что делать если после / нет ничего? Даже index.html нету.
2) В моем примере несколько инпутов

<input type=text class=long name=Login tabindex=1 value=>

<input type=password class=long name=Password tabindex=3 value=>

<input type=submit tabindex=5 value=" Войти ">

Ведь для каждого текстбокса есть своё имя и свой value.
Это значит должно быть два Parametrs:

Parameter1="name=Login&value=Vasya"
Parameter2="name=Password&value=12345"

Так?

И как происходит действие Submit? Ведь надо симулировать нажатие на кнопку. Или само действие Winsock1.SendData "POST /адрес_скрипта HTTP/1.1" & vbCrLf уже равно нажатию на кнопку?

Спасибо.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.10.2004 (Ср) 14:34

Что-то обязательно будет.
Заполни форму на web-странице и отправь данные, посмотри, на какую ссылку тебя переведут.
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.10.2004 (Ср) 14:37

А выглядеть параметры будут приблизительно так: ?login=Vasya&Password=12345&method=1. Параметры отделяются от скрипта символом "?" и разделяются между собой символом "&".
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.10.2004 (Ср) 14:51

alibek писал(а):Я тебя немного не так понял. Параметры это то, что _внутри_ формы, т.е. INPUT.
А адрес скрипта -- куда ты обращаешься? Например в адреса http://bbs.vbstreets.ru/viewtopic.php?t=10281 хост это http://bbs.vbstreets.ru, а /viewtopic.php - адрес скрипта (а ?t=10281 - параметр t равный 10281).

Имхо как раз наоборот. Хост - "bbs.vbstreets.ru" (без http://), а адрес - "/viewtopic.php?t=10281". Параметры, которые POST-ятся, идут отдельно и в урле не отображаются.
Последний раз редактировалось tyomitch 13.10.2004 (Ср) 15:01, всего редактировалось 1 раз.
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.10.2004 (Ср) 14:53

Shurik90 писал(а):Т.е. если это http://www.rambler.ru, то
Код: Выделить всё
Winsock1.SendData "Host: www.rambler.ru" & vbCrLf

Так? А как быть с адресом скрипта? Оставить пустым?
Код: Выделить всё
Winsock1.SendData "POST / HTTP/1.1" & vbCrLf


Да, всё правильно.

Shurik90 писал(а):
1. Полагаю, все что в Form определены (ведь могут быть не только INPUT, но и LIST).

alibek,
Но ведь есть
<form name=Auth>
и
<input name=Login>

Какой из них писать в париметры?
Может кто-то делал похожее или видел где-то?

Писать ту, которую шлёшь. У каждой формы обычно задаётся собственный Action.

Одновременно шлётся только одна форма, а не все сразу.
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.10.2004 (Ср) 14:57

Shurik90 писал(а):ОК.
1) Что делать если после / нет ничего? Даже index.html нету.

Только слэш и писать, что ж ещё?

Shurik90 писал(а):2) В моем примере несколько инпутов

<input type=text class=long name=Login tabindex=1 value=>

<input type=password class=long name=Password tabindex=3 value=>

<input type=submit tabindex=5 value=" Войти ">

Ведь для каждого текстбокса есть своё имя и свой value.
Это значит должно быть два Parametrs:

Parameter1="name=Login&value=Vasya"
Parameter2="name=Password&value=12345"

Так?

Нет. "Login=Vasya&Password=12345"

Shurik90 писал(а):И как происходит действие Submit? Ведь надо симулировать нажатие на кнопку. Или само действие Winsock1.SendData "POST /адрес_скрипта HTTP/1.1" & vbCrLf уже равно нажатию на кнопку?
Спасибо.

Да, равно нажатию на кнопку.
Последний раз редактировалось tyomitch 13.10.2004 (Ср) 15:02, всего редактировалось 1 раз.
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.10.2004 (Ср) 14:59

alibek писал(а):А выглядеть параметры будут приблизительно так: ?login=Vasya&Password=12345&method=1. Параметры отделяются от скрипта символом "?" и разделяются между собой символом "&".

Имхо ты очень жестоко путаешь GET и POST...
При POST-е никаких вопросиков нет.
Изображение

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.10.2004 (Ср) 15:25

Да, помоему меня что-то занесло.
Lasciate ogni speranza, voi ch'entrate.

Shurik90
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 15.06.2003 (Вс) 23:49

Сообщение Shurik90 » 13.10.2004 (Ср) 16:22

Спасибки, щас буду посмотреть :)
Напишу что получится.

Shurik90
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 15.06.2003 (Вс) 23:49

Сообщение Shurik90 » 15.10.2004 (Пт) 0:39

Кстати, а название формы что, не имеет значение? Ведь не зря же у каждой формы есть своё имя. Т.к. если есть на странице несколько форм с одинаковыми инпутами, то надо знать какому из них я делаю submit. Или нет?

Заранее спасибо.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.10.2004 (Пт) 8:16

Название формы не имеет значения, имеет значение только её Action.
Если на странице несколько форм, то как правило, у каждой свой Action, т.е. POST будет слаться для каждой формы своему скрипту.
Изображение

Shurik90
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 15.06.2003 (Вс) 23:49

Сообщение Shurik90 » 16.10.2004 (Сб) 9:39

Так а куда же этот action вставляется???

Winsock1.SendData "POST /адрес_скрипта HTTP/1.1" & vbCrLf

Сюда в адрес скрипта ?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.10.2004 (Сб) 12:23

Да, именно так.

Например: на этой странице есть форма с таким кодом:
Код: Выделить всё
<form method="post" action="viewtopic.php?t=10281&start=15">
- для неё нужно слать
Код: Выделить всё
"POST /viewtopic.php?t=10281&start=15 HTTP/1.1"
Изображение

Shurik90
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 15.06.2003 (Вс) 23:49

Сообщение Shurik90 » 19.10.2004 (Вт) 2:14

Хорошо, а если у меня есть вот такой адрес странички, на которой расположен скрипт:
Код: Выделить всё
http://bbs.vbstreets.ru/posting.php


а форма с кодом выглядит вот так:
Код: Выделить всё
<form method="post" action="viewtopic.php?t=10281&start=15">



тогда что я вставляю в POST--> адрес_скрипта ?
"POST /адрес_скрипта HTTP/1.1"

Потому что всё, что я делаю прекрасно работает для голого адреса (когда после слэша пусто), в противном случае не работает.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.10.2004 (Вт) 17:21

Ещё раз: если в action написано "viewtopic.php?t=10281&start=15", то и ты пишешь то же самое:
"POST /viewtopic.php?t=10281&start=15 HTTP/1.1"
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: PetalBot и гости: 13

    TopList  
cron