Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB58.8610
BTC/USD0.0000
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 18.10.2010, 20:41   #1
Nosfer
n/a
 
Аватар для Nosfer
 
Регистрация: 18.02.2009
Сообщений: 161
Бабло: $40295
По умолчанию вопрос по работе с формами на php

Столкнулся с проблемой.
Есть форма, нужно собрать все ее данные в виде параметр=значение, казалось бы можно было с помощью preg_match всю эту инфу собрать, а потом на основе этих данных сформировать post_data и запульнуть куда надо, но есть загвоздка.

Кол-во полей у формы динамично, иногда появлются в разных местах hiddenы, такое обработать регекспами уже проблематично.
Встречался ли кому-нибудь метод сбора этих данных более оптимальным способом, может кто класс видел?
Nosfer вне форума  
Старый 18.10.2010, 21:07   #2
JackSoft
Бабло победит зло
 
Аватар для JackSoft
 
Регистрация: 20.06.2008
Сообщений: 2,494
Бабло: $329790
По умолчанию

Мету из принципа не помогу
__________________
"Одно Касание/Touch File" - безопасный обмен файлами "TFUtils" - набор утилит TouchFile "TF Screenshots" - заменим Gyazo безопасным аналогом
JackSoft вне форума  
Старый 18.10.2010, 21:10   #3
Nosfer
n/a
 
Аватар для Nosfer
 
Регистрация: 18.02.2009
Сообщений: 161
Бабло: $40295
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от JackSoft Посмотреть сообщение
Мету из принципа не помогу
того принципа что время потратил и жалко даром отдавать?
Nosfer вне форума  
Старый 18.10.2010, 21:33   #4
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,382
Бабло: $470735
По умолчанию

не могу понять, почему preg_match_all не подходит, просто нужно составить правильные правила и все
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 18.10.2010, 21:43   #5
imgreen
Lion King
 
Аватар для imgreen
 
Регистрация: 15.11.2008
Сообщений: 12,090
Бабло: $247698096
По умолчанию

Цитата:
Сообщение от chesser Посмотреть сообщение
не могу понять, почему preg_match_all не подходит, просто нужно составить правильные правила и все
он хочет, чтобы за него составили
__________________
ДетскиеДомики.ру - забота о детях с особыми нуждами.
imgreen вне форума  
Старый 18.10.2010, 21:49   #6
deschain
Senior Member
 
Аватар для deschain
 
Регистрация: 01.11.2007
Сообщений: 2,275
Бабло: $288535
По умолчанию

Всё регекспами выдирается. Один на инпуты, один на селекты, один на текстарею и все дела.
deschain вне форума  
Старый 18.10.2010, 22:32   #7
bablolover
Senior Member
 
Аватар для bablolover
 
Регистрация: 10.10.2010
Сообщений: 1,060
Бабло: $126610
По умолчанию

а в какой момент появляется опасность использования всяких спец.символов в вводе пользователя?
типа |> или \0x или там ";print
разве не сразу надо весь ввод экранировать и проверять?
__________________
покупаю худеющий ру-траф в любых кол-вах
стоимость смс на номер
bablolover вне форума  
Старый 18.10.2010, 22:57   #8
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,382
Бабло: $470735
По умолчанию

если лень регексп писать, то можно домом:
PHP код:
<?php
$html 
file_get_contents('http://www.gofuckbiz.com/showthread.php?t=19750');
$doc = new DOMDocument();
$doc->loadHTML($html);
$inputs $doc->getElementsByTagName('input'); // тут вписать нужный тег
foreach($inputs as $el)
  echo 
$el->getAttribute('name') . '=' $el->getAttribute('value') . PHP_EOL;
?>
или, если нужно фильтровать input'ы, то удобно через dom xpath
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 22.10.2010, 16:06   #9
Nosfer
n/a
 
Аватар для Nosfer
 
Регистрация: 18.02.2009
Сообщений: 161
Бабло: $40295
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от chesser Посмотреть сообщение
если лень регексп писать, то можно домом:
PHP код:
<?php
$html 
file_get_contents('http://www.gofuckbiz.com/showthread.php?t=19750');
$doc = new DOMDocument();
$doc->loadHTML($html);
$inputs $doc->getElementsByTagName('input'); // тут вписать нужный тег
foreach($inputs as $el)
  echo 
$el->getAttribute('name') . '=' $el->getAttribute('value') . PHP_EOL;
?>
или, если нужно фильтровать input'ы, то удобно через dom xpath
рассчитывать на то, что формы будут валидными с точки зрения xml слишком наивно, поэтому дом не катит. Буду думать в сторону регекспов более глобально.
Nosfer вне форума  
Старый 22.10.2010, 22:51   #10
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,382
Бабло: $470735
По умолчанию

Цитата:
Сообщение от Nosfer Посмотреть сообщение
рассчитывать на то, что формы будут валидными с точки зрения xml слишком наивно, поэтому дом не катит. Буду думать в сторону регекспов более глобально.
а ты используй tidy(или автокорректор там какой-то есть), который включается в dom'е, и будет не наивно. В большинстве случаев невалидные сайты нормально парсятся, проверенно на моем парсере не на одном сайте...

регексп тоже норм, не сложно
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума