Парсинг php страницы по средстам Delphi, получаю не все данные
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.217.37] |
|
|
Соблюдайте общие правила форума
MSDN Library
FAQ раздела
Поиск по разделу
Как правильно задавать вопросы| Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Парсинг php страницы по средстам Delphi, получаю не все данные
|
Сообщ.
#1
,
|
|
|
|
Проблема обстоит так.. Имеется файл index.php в нем есть форма с полями ввода при запонении полей отправляю данные методом GET в скрипт save.php где просто вывожу полученные данные вот код save.php
![]() ![]() <?php if (isset($_GET['pole_uo'])) { $pole_uo = $_GET['pole_uo']; if ($pole_uo == '') { unset($pole_uo);} } if (isset($_GET['pole_do'])) { $pole_do=$_GET['pole_do']; if ($pole_do =='') { } } if (isset($_GET['pole_uk'])) { $pole_uk = $_GET['pole_uk']; if ($pole_uk == '') { unset($pole_uk);} } if (isset($_GET['pole_dk'])) { $pole_dk=$_GET['pole_dk']; if ($pole_dk =='') { unset($pole_dk);} } if (isset($_GET['pole_nomer'])) { $pole_nomer = $_GET['pole_nomer']; if ($pole_nomer == '') { unset($pole_nomer);} } if (isset($_GET['pole_vremya'])) { $pole_vremya=$_GET['pole_vremya']; if ($pole_vremya =='') { unset($pole_vremya);} } $data = date("d.m.Y"); $vremya = date("H:i:s"); echo "$pole_uo<br>"; echo "$pole_uk<br>"; echo "$pole_dk<br>"; echo "$Nomer<br>"; echo "$pole_vremya<br>"; echo "$vremya<br>"; echo "$data<br>"; ?> когда просматриваю когд страницы все нормально отображается вот пример ![]() ![]() ааа<br>333<br>ббб<br>3<br>123456<br>22<br>03:25:21<br>16.05.2013<br><META name="Content-Type" content="text/html; charset=utf-8"> <META http-equiv="Content-Type" content="text/html; charset=utf-8"> ... то есть переменные получены... но когда пытаюсь загрузить код страницы в Memo с помощью Delphi выводится вот что: <br><br><br><br><br>03:16:39<br>16.05.2013<br><META name="Content-Type" content="text/html; charset=utf-8"> <META http-equiv="Content-Type" content="text/html; charset=utf-8"> пустота между тегами <br> как будто там ничего нет непойму почему так.. на странице же они есть!!! Вот как получаю код страницы ![]() ![]() procedure TForm1.Button1Click(Sender: TObject); var url : string; s : string; begin URL := 'http://birtaxi/save.php'; s:=IdHTTP1.Get(URL); Memo1.Text:=(s); Memo1.Text := UTF8Decode(s); end; помогите!! Буду очень признателен |
|
Сообщ.
#2
,
|
|
|
|
формы нужно отправлять через POST
GET - это параметры передающиеся через адресную строку, ну напиши ![]() ![]() URL := 'http://birtaxi/save.php?pole_uo=bugaga'; и получишь вывод этого параметра. а вообще register_globals лучше отключить у ПХП, в таком случае сразу бы вылетела ошибка что переменные типа $pole_uo не определены |
|
Сообщ.
#3
,
|
|
|
|
Цитата antonn @ формы нужно отправлять через POST Исправил... При этом код в Delphi теперь выглядит так: ![]() ![]() procedure TForm1.Button1Click(Sender: TObject); var url : string; mStream : TMemoryStream; s : string; begin URL := 'http://birtaxi/save.php'; mStream := TMemoryStream.Create; s:=IdHTTP1.POST(URL,mStream); Memo1.Text:=(s); Memo1.Text := UTF8Decode(s); mStream.Free; end; Но все равно результат тот же |
|
Сообщ.
#4
,
|
|
|
|
Dr.Eik
нужно же перечислить все поля формы (ну со значениями) которые нужно отправить. плюс в коде скрипта нужно ожидать переменные в $_POST[] |
|
Сообщ.
#5
,
|
|
|
|
Цитата antonn @ Dr.Eik нужно же перечислить все поля формы (ну со значениями) которые нужно отправить. плюс в коде скрипта нужно ожидать переменные в $_POST[] Вот index.php ![]() ![]() <? echo '<form id="form_otpr" class="formular" action="save.php" method="POST">'; echo 'Улица откуда: <input class="validate[required,length[0,100]] text-input" name="pole_uo" type="text" /><br>'; echo 'Дом откуда: <input class="validate[required,custom[noSpecialCaracters] length[1,3]] text-input" name="pole_do" type="text" /><br>'; echo 'Улица куда: <input class="validate[required,custom[onlyLetter],length[0,100]] text-input" name="pole_uk" type="text" /><br>'; echo 'Дом куда: <input class="validate[required,custom[noSpecialCaracters] length[1,3]] text-input" name="pole_dk" type="text" /><br>'; echo 'Номер: <input class="validate[required,custom[onlyNumber],length[0,11]] text-input" name="pole_nomer" type="text" /><br>'; echo 'Время ожидания: <input class="validate[required,custom[onlyNumber] length[1,2]] text-input" name="pole_vremya" type="text" /><br>'; echo "<input type='submit' value='Отправить'/>"; echo '</form>' ?> Вот save.php ![]() ![]() <?php mysql_set_charset("utf8"); if (isset($_POST['pole_uo'])) { $pole_uo = $_POST['pole_uo']; if ($pole_uo == '') { unset($pole_uo);} } if (isset($_POST['pole_do'])) { $pole_do=$_POST['pole_do']; if ($pole_do =='') { unset($pole_uo);} } if (isset($_POST['pole_uk'])) { $pole_uk = $_POST['pole_uk']; if ($pole_uk == '') { unset($pole_uk);} } if (isset($_POST['pole_dk'])) { $pole_dk=$_POST['pole_dk']; if ($pole_dk =='') { unset($pole_dk);} } if (isset($_POST['pole_nomer'])) { $pole_nomer = $_POST['pole_nomer']; if ($pole_nomer == '') { unset($pole_nomer);} } if (isset($_POST['pole_vremya'])) { $pole_vremya=$_POST['pole_vremya']; if ($pole_vremya =='') { unset($pole_vremya);} } $data = date("d.m.Y"); $vremya = date("H:i:s"); echo "$pole_uo<br>"; echo "$pole_do<br>"; echo "$pole_uk<br>"; echo "$pole_dk<br>"; echo "$pole_nomer<br>"; echo "$pole_vremya<br>"; echo "$vremya<br>"; echo "$data<br>"; ?> По сути все правильно... Но почему не работает не ясно |
|
Сообщ.
#6
,
|
|
|
|
что значит "не работает" и не работает где - при использовании браузера с заходом в index.php или при использовании дельфи отправляющей данные напрямую в save.php?
в крайнем случае в скрипте можно делать print_r($_POST); и будет сразу видно что пришло вообще |
|
Сообщ.
#7
,
|
|
|
|
Цитата antonn @ что значит "не работает" и не работает где - при использовании браузера с заходом в index.php или при использовании дельфи отправляющей данные напрямую в save.php? в крайнем случае в скрипте можно делать print_r($_POST); и будет сразу видно что пришло вообще Значения переменных выводятся в браузер, при просмотре кода страницы в браузере видны значения этих переменных... но когда пытаюсь получить код всей страницы в Memo получаю все кроме этих значений вот пример: <br><br><br><br><br><br>04:45:51<br>16.05.2013<br><META name="Content-Type" content="text/html; charset=utf-8"> <META http-equiv="Content-Type" content="text/html; charset=utf-8"> <br>Заказ успешно сформирован <a href='index.php' >Главная страница</a> а в браузере при просмотре кода страницы между тегами <br> значения которые мне нужны... вот пример: йй<br>2<br>цц<br>2<br>2132<br>12<br>04:29:45<br>16.05.2013<br><META name="Content-Type" content="text/html; charset=utf-8"> <META http-equiv="Content-Type" content="text/html; charset=utf-8"> <br>Заказ успешно сформирован <a href='index.php' >Главная страница</a> Почему Delphi то их не видит??? Добавлено При использовании print_r($_POST); браузер(к стати у меня Opera.. если это имеет значение) выводит Array ( [pole_uo] => йй [pole_do] => 2 [pole_uk] => цц [pole_dk] => 2 [pole_nomer] => 2132 [pole_vremya] => 12 ) А Delphi в Memo отображает вот как: Array ( ) <br><br><br><br><br><br>04:58:48<br>16.05.2013<br> |
|
Сообщ.
#8
,
|
|
|
|
Цитата Почему Delphi то их не видит??? потому что дельфи не передает эти поля скрипту save.php. скрипты index.php и save.php вообще никак не связаны, первый скрипт рисует формочку со всеми нужными полями которую браузер отправляют второму скрипту. В дельфи мы сразу обращаемся к второму скрипту, соответственно нужно же как-то и поля формы нам самим отправлять. А в твоем коде идет просто запрос POST без данных формы, в скрипт ничего не передается Добавлено вот хотя бы тут глянь пример: http://desksoft.ru/index.php?drkb=335&id=3...rch=indy%20post |
|
Сообщ.
#9
,
|
|
|
|
Dr.Eik
Параметры не передаешь. Вот нули и получаешь. |
|
Сообщ.
#10
,
|
|
|
|
Спасибо большое понял ошибку.. приду с работы все исправлю.. хорошо когда есть у кого спросить
|
|
Сообщ.
#11
,
|
|
|
|
И все равно я что то завис... передавать то параметры в скрипт это одно.. а получать их это другое... из index.php я передаю параметры в save.php а delphi эти переданные параметры должен вытащить... а как не пойму.(((
|
|
Сообщ.
#12
,
|
|
|
|
из index.php ничего не передается, этот скрипт просто рисует пустую форму. отправляет параметры уже браузер беря названия полей из рисуемой страницы index.php, делает он это аналогично программе на дельфи. а save.php возвращает страницу на которой рисует что он получил.
и что значит "получить их это другое"? что вообще нужно сделать? если хочется из браузера в программе на дельфи получать отправляемые браузером страницы и параметры то это так не делается |
|
Сообщ.
#13
,
|
|
|
|
Впринципе не особо сложно..
Пример на одной строчке.. ![]() ![]() $usr = $_POST['User']; echo 'Test "' .$usr. '"'; В проге обращаемся к этому скрипту.. ![]() ![]() HTTP:= THTTPSend.Create; Data:= TStringStream.Create(''); Data.WriteString('User=блабла' ); HTTP.Headers.Add( 'V: Update 1.0' ); HTTP.Document.LoadFromStream(Data); HTTP.MimeType:= 'application/x-www-form-urlencoded'; HTTP.HTTPMethod('POST','http://...chek.php' ); Это правда синапс.. но сути то не меняет.. берёш ответ после Поста любым удобным способом. т.е. как уже понятно..в ответе видим Test "блабла".. Пробуй для начала на протом примере..а уж потом "заварачивай" как нужно.. |
|
Сообщ.
#14
,
|
|
|
|
Цитата faust777 @ если хочется из браузера в программе на дельфи получать отправляемые браузером страницы и параметры то это так не делается как раз таки это и хочется) |
|
Сообщ.
#15
,
|
|
|
|
И если можно жнлательно пример кода как это сделать... ну в частности "из браузера в программе на дельфи получать отправляемые браузером страницы и параметры" просто знаний в этой сфере нехватает.. заранее прощу прощения если спрашиваю какие то элементарные вещи..
|