[Форум] [Помощь] [Поиск] [Выйти] |
Добро пожаловать, ![]() |
|
|
| ||
Кто нить знает как посредством PHP&JS заполнить какую нибудь форму, например авторизации и находясь в авторизированном состоянии сделать какие либо действия на сайте...? |
| ||
дык как и в любом другом языке - воспользоваться мудростью из libwww, а как это в php называется и делается прочитать в документации |
| ||
Первый вариант: передовать все параметра по средством GET или POST. Вариант второй: советую изучить работут с сессиями ;-) |
| ||
...и русский язык ;) |
| ||
на сколько я знаю, нужен будет https |
| ||
.. и gopher ;-) |
| ||
Запутали человека блин :) Жаваскрипт, я думаю, роли здесь не сыграет. А вот РНР - это полноправный язык программирования, он вполне может делать коннект к другому сайту, передавать ему какие-то параметры и считывать ответ. При этом нужно знать три вещи: 1) как работать с сокетами 2) структуру HTTP-протокола 3) как парсить НТМL Естественно, есть уже написанные библиотеки для работы с НТТР, чтобы не писать все с нуля, можно использовать их. Например, чтобы отправить сообщение на этот форум, применяется такая форма: <FORM ACTION='post_reply_x.pl' METHOD='post'> Сообщение<BR> <TEXTAREA COLS=70 ROWS=13 NAME='body' WRAP='soft'></TEXTAREA><P> <INPUT TYPE='submit' VALUE='Отправить'> <INPUT TYPE='checkbox' NAME='notify'>Ответы присылать по почте/Email <INPUT TYPE='hidden' NAME='id' VALUE='330629'> <INPUT TYPE='hidden' NAME='pg' VALUE='1'> <INPUT TYPE='hidden' NAME='ori' VALUE=''> </FORM> Чтобы отправить сообщение скриптом, необходимо: - приконнектиться к серверу jedi.var.ru:80 - послать серверу НТТР-запрос, который будет состоять из шапки запроса и тела запроса, разделенных пустой строкой. первая строка шапки будет: "POST /forum/post_reply_x.pl HTTP/1.0" затем идут строки вида "Параметр:Значение" которые определяют специальные параметры, например используемую кодировку, сохранение коннекта после выполнения запроса, длину тела сообщения, куки и т.д. В теле запроса ты должен будешь указать параметры формы, в виде: "параметр1=значение1&параметр2=значение2&..." В нашем случае параметрами будут: body - тело сообщения notify - уведомлять ли по е-майл id - уникальный идентификатор пользователя pg - страница ori - уж не знаю что :) Тело запроса при использовании метода POST, насколько я помню, должно быть зашифровано с использованием алгоритма base64. Кроме того, в шапке запроса должна быть указана точная длина тела с помощью параметра Content-Length. С методом пост я давно не работал, поэтому для уточнения посмотри документацию по НТТР. Если используется метод GET, для задания параметров нужно просто забить их в первую строку шапки, например: "GET /auth.php?username=natali&password=kukareku" Для того, чтобы отправить сообщение именно на этот форум, наверняка придется в шапке указывать еще параметр Cookies. В куках хранят уникальные id-коды (как правило, нефиговой длины), позволяющие опознать пользователя с постоянно меняющимся айпи. Эти куки могут присваиваться после аутентификации и их наличие может проверяться при каждом запросе. А иногда, они после каждого запроса еще и меняются. Однако, все эти трудности преодолимы. Хуже, когда просят ввести "номер, указанный на картинке". Думаю, с этим все встречались, например, при отсылке СМС. Тут максимум, что можно сделать, это применить распознаватель текста - и то, результат будет не 100%-ный. Парсить НТМL нужно, если хочешь увидеть ответ, который дал сервер на твои действия. Например, при динамической смене куков после каждого запроса это придется делать. Но не так уж это и трудно. Тут, конечно, в помощь пойдут регулярные выражения, и знание языка HTML. Считываешь приходящее с сервера и вперед парсить как обычную строку. Наконец, учти, что если ты хочешь запускать скрипт через веб, т.е. открывая его обычным образом, то насколько я помню, время работы скрипта ограничено сервером и очень мало(несколько мс), и после прошествия этого времени интерпретатор Перла или РНР убивает процесс. Поэтому, тут, быть может, придется идти на ухищрения, которые сложно осуществить без наличия шелл-доступа к серверу, где лежит скрипт. В этом я, может быть, и не прав, но что-то такое слышал. |
| ||
Насколько я помню (а я с PHP знаком весьма поверхностно), то время жизни задается в php.ini и равно 30 секундам, если ничего не править. Так же и с сокетами работать - себе дороже. В плане сложности написания и отладки. В perl для этого есть libwww, в PHP что-то тоже есть. При использовании этого дела ты получаешь объект веб-клиента, работать с которым куда как проще, понятнее и быстрее, нежели напрямую с сокетами. Опять же, о структуре HTTP-протокола особо задумываться не нужно. Вот :) |