WEB форумы на jedi
[Форум] [Помощь] [Поиск] [Выйти]
Добро пожаловать, [info]User

WEB форумы на jedi [ПОИСК] [Архив до 03.2006]

Тема PHP & JS К предыдущему сообщению На следующее сообщение Программирование

Отправил LOGMAN в 04:09 12.12.2005[Ответить]
Кто нить знает как посредством PHP&JS заполнить какую нибудь форму, например авторизации и находясь в авторизированном состоянии сделать какие либо действия на сайте...?


Отправил CAHbKA в 09:03 12.12.2005[Ответить]
дык как и в любом другом языке - воспользоваться мудростью из libwww, а как это в php называется и делается прочитать в документации


Отправил Kymarik в 21:31 18.12.2005[Ответить]
Первый вариант: передовать все параметра по средством GET или POST.
Вариант второй: советую изучить работут с сессиями ;-)


Отправил Patrol в 21:54 18.12.2005[Ответить]
...и русский язык ;)


Отправил elite в 17:48 19.12.2005[Ответить]
на сколько я знаю, нужен будет https


Отправил pinetree в 08:27 20.12.2005[Ответить]
.. и gopher ;-)


Отправил omlin в 00:56 03.01.2006[Ответить]
Запутали человека блин :)

Жаваскрипт, я думаю, роли здесь не сыграет.
А вот РНР - это полноправный язык программирования, он вполне может делать коннект к другому сайту, передавать ему какие-то параметры и считывать ответ. При этом нужно знать три вещи:
  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='Отправить'> &nbsp;&nbsp;
<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. Считываешь приходящее с сервера и вперед парсить как обычную строку.

Наконец, учти, что если ты хочешь запускать скрипт через веб, т.е. открывая его обычным образом, то насколько я помню, время работы скрипта ограничено сервером и очень мало(несколько мс), и после прошествия этого времени интерпретатор Перла или РНР убивает процесс. Поэтому, тут, быть может, придется идти на ухищрения, которые сложно осуществить без наличия шелл-доступа к серверу, где лежит скрипт. В этом я, может быть, и не прав, но что-то такое слышал.


Отправил Patrol в 18:53 03.01.2006[Ответить]
Насколько я помню (а я с PHP знаком весьма поверхностно), то время жизни задается в php.ini и равно 30 секундам, если ничего не править.
Так же и с сокетами работать - себе дороже. В плане сложности написания и отладки. В perl для этого есть libwww, в PHP что-то тоже есть. При использовании этого дела ты получаешь объект веб-клиента, работать с которым куда как проще, понятнее и быстрее, нежели напрямую с сокетами. Опять же, о структуре HTTP-протокола особо задумываться не нужно.
Вот :)