Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вопрос по QUERY_STRING
 
 автор: BaSh   (19.06.2007 в 20:24)   письмо автору
 
 

Здравствуйте!
например, в граберах применяется переменная $_SERVER['QUERY_STRING']
её можно применять для того, чтобы грабить не только страницу page.php, но и всё что передается методом get через неё, т.е. ссылки вида page.php?act=str и т.д. Например: $url=file_get_contents('http://site.ru/page.php?$QUERY_STRING);
Собственно вопрос: можно ли как то сграбить страницы вида /papka/page2.php и т.д, делая запрос только к page.php. т. е ссылки не имеют вид page.php?act=str .Или одновременно сграбить все страницы в папке. Просто таких страниц оч. много и невозможно обращаться к каждой...
Есть такой вариант:

<?php
$fg
=@file_get_contents("http://site.ru/$link"
$ex=explode("/",$link);
if (
$link!="")
{
$fg=str_replace("<a href=\"","<a href=\"index.php?link=$ex[0]",$fg);
}
else
{
$fg=str_replace("<a href=\"","<a href=\"index.php?link=",$fg);
?>


но в моем случае так не получается...

   
 
 автор: Disable   (19.06.2007 в 21:01)   письмо автору
 
   для: BaSh   (19.06.2007 в 20:24)
 

Так как все ссылки страницы имеют вид "something.php?param" то есть смысл их заменять на что-то типа
"graber.php?something.php|param"

graber.php = файл вашего грабера
something.php = удаленный файл
param = параметры запроса

   
 
 автор: BaSh   (19.06.2007 в 22:01)   письмо автору
 
   для: Disable   (19.06.2007 в 21:01)
 

Disable, спасибо, но такой вариант не работает... показывает пустую страницу... и у меня там ссылки вида /papka/page.html, /papka/page2.html и т.д.
По-моему безвыходная ситуация....

   
 
 автор: Disable   (19.06.2007 в 22:11)   письмо автору
 
   для: BaSh   (19.06.2007 в 22:01)
 

Ничего подобного, надо просто анализировать что запрашивается в file_get_contents() и грамотно регулярку для замены адреса составить.

   
 
 автор: BaSh   (19.06.2007 в 22:30)   письмо автору
 
   для: Disable   (19.06.2007 в 22:11)
 

вообщем вот мой скрипт:
form.php

$abonent = @$_POST["abonent"];
$fname = @$_POST["fname"];
$sname = @$_POST["sname"];
$phone = @$_POST["phone"];
$params="?firstName=$fname&middleName=$sname&phone=$phone&abonent=$abonent&firstName=$fname&middleName=$sname&phone=$phone";
$headers = array("Accept: application/x-www-form-urlencoded */*",
"Accept-Language: ru",
"Proxy-Connection: Keep-Alive",
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4");
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.nomer.org/moskva/$link");
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers); 
curl_setopt($ch, CURLOPT_REFERER , 'http://www.nomer.org/moskva/');
$output=curl_exec($ch);
/*   не рабочий вариант
$ex=@explode(" ",$link);
if ($link!="")
{
$output=@str_replace("<a href=","<a href=form.php?link=$ex[0]",$output);
}
else
{
$output=@str_replace("<a href=","<a href=form.php?link=",$output);
*/
echo $output;

разбор данных страницы не стал писать.

и index.php


<?php
echo'<form action="form.php" method="post">
 Фамилия   <input id = "myFioInput" text name=abonent  size="12">
 Имя                
  <input text name=fname  size="12">
Отчество     <input text name=sname  size="12">
тел                <input text name=phone size="8" maxlength="8">
<input  type="submit" value="  Найти  "   style="color: #003366; background-color:#cccccc" >
                </font></form><br>'
;
?>


И собственно, результат поиска зачастую выходит на несколько страниц. На одной странице показывается 10 человек, а следующая страница имеет адрес вида /moskva/page.html
Вот в чем вся загвоздка.

   
 
 автор: Disable   (19.06.2007 в 23:08)   письмо автору
 
   для: BaSh   (19.06.2007 в 22:30)
 


<?php 
if (!empty($_SERVER['QUERY_STRING']))
{
    
$headers = array("Accept: application/x-www-form-urlencoded */*"
"Accept-Language: ru"
"Proxy-Connection: Keep-Alive"
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4"); 
$ch=curl_init(); 
curl_setopt($chCURLOPT_URL'http://www.nomer.org/moskva/'.$_SERVER['QUERY_STRING']); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);  
curl_setopt($chCURLOPT_REFERER 'http://www.nomer.org/moskva/'); 
$output=curl_exec($ch);
}

if (!empty(
$_POST))
{
    
$abonent = @$_POST["abonent"]; 
$fname = @$_POST["fname"]; 
$sname = @$_POST["sname"]; 
$phone = @$_POST["phone"]; 
$params="?firstName=$fname&middleName=$sname&phone=$phone&abonent=$abonent&firstName=$fname&middleName=$sname&phone=$phone"
$headers = array("Accept: application/x-www-form-urlencoded */*"
"Accept-Language: ru"
"Proxy-Connection: Keep-Alive"
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4"); 
$ch=curl_init(); 
curl_setopt($chCURLOPT_URL"http://www.nomer.org/moskva/"); 
curl_setopt($chCURLOPT_POSTFIELDS$params); 
curl_setopt ($chCURLOPT_POST1); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);  
curl_setopt($chCURLOPT_REFERER 'http://www.nomer.org/moskva/'); 
$output=curl_exec($ch); 
}

$output=preg_replace('|http://www.nomer.org/moskva/([^\.]+\.html)|sU','index.php?\\1',$output);
echo 
$output;


echo
'<form action="index.php" method="post"> 
 Фамилия   <input id = "myFioInput" text name=abonent  size="12"> 
 Имя                 
  <input text name=fname  size="12"> 
Отчество     <input text name=sname  size="12"> 
тел                <input text name=phone size="8" maxlength="8"> 
<input  type="submit" value="  Найти  "   style="color: #003366; background-color:#cccccc" > 
                </font></form><br>'

?>


ну как-то так.
вырежете все лишнее (рабочая форма внизу)

   
 
 автор: BaSh   (19.06.2007 в 23:22)   письмо автору
 
   для: Disable   (19.06.2007 в 23:08)
 

ОГРОМНОЕ СПАСИБО! Всё работает!
Кстате curl' ом грабить страницы я тоже научился, благодаря вашему примеру с темы ниже.
БЛАГОДАРЮ!

   
 
 автор: Disable   (19.06.2007 в 23:27)   письмо автору
 
   для: BaSh   (19.06.2007 в 23:22)
 

Блин, что я делаю :)
А сайтик интересный вы выбрали, правда много кого я там не нашел (по Питеру)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования