PHP. Нужно проверить изменения формы страницы
Решение (как я думаю): нужно взять страницу, найти в ней тег FORM и все элементы этого тега (input, option, img ...) нужно поместить в массив. Далее, когда потребуется проверить, изменилось ли что-то в форме, то мы опять же разобьем страницу и поместим ее в массив, сравним текущий и прежний массивы. Если масивы совпадают - то считаем что форма осталась прежней.
Однако в таком похходе есть свои минусы.
Во-первых, если в теге FORM будет присутствовать поле action в котором будет указан SID (он меняется постоянно), тогда при каждой новой загрузке страницы будет меняться и значения action.
Во-вторых, картинка подтверждения (графический код) будет при каждой загрузке страницы меняться.
В-третьих, некоторые формы располагаются не полностью на одной странице, а располагаются на нескольких страницах (ввод имени и мейла на одной, заполнение остальных данных на другой странице).
Подскажите пожалуйста, как можно решить эту задачу, чтобы избавиться от указанных недостатков.
Заранее Вам благодарен!
Цитата:
Во-первых, если в теге FORM будет присутствовать поле action в котором будет указан SID (он меняется постоянно), тогда при каждой новой загрузке страницы будет меняться и значения action.
\
Что тебе мешает путём использования preg_replace удалить эти SID?
Цитата:
Во-вторых, картинка подтверждения (графический код) будет при каждой загрузке страницы меняться.
Что тебе мешает при сравнении формы просто не учитывать картинки?
Цитата:
В-третьих, некоторые формы располагаются не полностью на одной странице, а располагаются на нескольких страницах (ввод имени и мейла на одной, заполнение остальных данных на другой странице).
Считываешь инфу с каждой страницы, засовываешь всё в один массив, и сравниваешь...
Вопрос от меня... А зачем такая мудотень нужна?
Насколько подробно тебе нужно отлавливать изменения? Тебе это нужно делать для каждого элемента формы или только для формы вцелом?
Можно не мудрить со сравнением массивов, а просто выделить форму из страницы и сравнить ее MD5 с хэшем прежней версии...
Код:
Насколько подробно тебе нужно отлавливать изменения? Тебе это нужно делать для каждого элемента формы или только для формы вцелом?
Нужно сравнивать все элементы, за исключением картинок. Предположим что форма имела 10 категорий в раскрывающемся списке, а теперь она пополнилась еще двумя пунктами. Следует отловить эти изменения.
Код:
Вопрос от меня... А зачем такая мудотень нужна?
У меня есть система, которая проверяет некоторые сайты, например, доски объявлений. Мой скрипт зайдет на доску, посмотрит что в ней изменилось и мообщит мне (или сам пополнит список полей). Я в свою очередь смогу отредактировать данные.
Если кто знает как реализовать такую систему, и готов сотрудничать со мной, то я готов заплатить за это денежку.
или я опять не по теме?
foxweb, здесь дело в том, что я работаю с сайтами, структуру которых я не знаю, и не знаю что им всбредет в голову. Может они сесии используют, может куки. Однако я беру страницу с помошью PHP, поэтому куки прискаивать будет некому, и данные будут передаваться в строках запроса к странице.
Или тебе непонятно как парсить HTML?
RussianSpy, я думаю что есть инструмент, который будет наподобие парсера XML но для html. И при этом этот компонент должен выделять только то, что стоит внутри тега FORM, учитывая свойстра тега, наподобие action, height и т.д.
http://ru.php.net/manual/ru/ref.tidy.php
Если формат страницы XHTML - подойдет любой XML-парсер
Если формат страницы XHTML - подойдет любой XML-парсер
Если ты работал с эти или хотел бы реализовать эту задачу, то можем поговорить. А то у меня есть большой проект, а сроки уже поджимаютю Главное в данном случае - идеи хорошие и качественное выполнение на перспективу. С оплатой можем обговорить, если возьмешься
Помочь советом на форуме - легко (чем я собственно и занимаюсь).
Могу также посоветовать покопать PEAR и сайт phpclasses.org - может найдешь уже реализованные классы. Только копать там долго.
Если не ошибаюсь, то мы с тобой по АСЕ разговор вели? Видать в этом причина, что ты не хочешь сотрудничать?
Кстати еще могу совет подкинуть (прям как в стране советов блин):
поиск по исходникам:
google.com/codesearch
Я уже валяюсь
RussianSpy, спасибо за совет. Действительно не знал, что есть такая прекрастная вещица!
Угу. Есть такой. DOM называется ;) Парсить и работать с кодом можно прямо на клиенте через JS.