Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > HTTP запрос с помощью PHP


Автор: Serheyka 25.11.2003, 00:22
Добрый вечер.
У меня вот какой вопрос:
Это с php связано.
Скачивать файлы с сайтов при помощи php понятно как.
А мне нужно чтобы скрипт сделал запрос к серверу с параметрами:
www.anysite.com?<параметры>
И ответ в виде файла html или txt нужно сохранить в папке где находится сам
скрипт присвоив ему какое-нибудь имя.
Заранее спасибо!

Автор: Spy 25.11.2003, 00:48
http://forum.vingrad.ru/index.php?act=ST&f=39&t=11992
<? #anysite.com/?a=b&c=d
$serv="http://www.anysite.com/";
$par1="a=b";
$par2="c=d";
$link=$serv."?".$par1."&".$par2;
$file = fopen("$link", "r");
$rf = fread($file, 20000000);
$grab = eregi("START TAG(.*)END TAG",$rf);
fclose($file);
echo $grab;
?>

Автор: MuToGeN 25.11.2003, 04:56
ф-ия, позволяющая скачивать все, что можно сачать по http, лежит в FAQ
остальное - это fopen(), fwrite() и fclose()

Автор: pascal 26.11.2003, 13:37
А вот ещё один извращенский вариант

Код
 $start_time = getmicrotime();
 $cash = "";
 $fp = fsockopen("pascal.net.ru", 80, $errno, $errstr, 1000);
 if (!$fp) {
  echo "Внутренняя ошибка скрипта.";
  exit;
 }
 $connect_time = getmicrotime()-$start_time;
 $REQUEST = "$REQUEST_METHOD /cgi-bin/forum/cmd.cgi".(($QUERY_STRING=="" || $QUERY_STRING=="?")?"":"?$QUERY_STRING")." HTTP/1.0\r\n".
  "Connection: keep-alive\r\n".
  "Host: pascal.net.ru\r\n".
  "Accept: $HTTP_ACCEPT\r\n".
  "Accept-Language: $HTTP_ACCEPT_LANGUAGE\r\n".
  "Referer: $HTTP_REFERER\r\n".
  "User-Agent: $HTTP_USER_AGENT\r\n".
  (($HTTP_COOKIE)?"Cookie: $HTTP_COOKIE\r\n":"");
 if (eregi("post", $REQUEST_METHOD)) {
  $s = "";
  foreach($_POST as $k=>$v) {
   $k = urlencode($k);
   $v = urlencode($v);
   $s .= (($s=="")?"$k=$v":"&$k=$v");
  }
  $REQUEST .= "Content-Length: ".strlen($s)."\r\n\r\n$s\r\n";
 }
 $REQUEST .= "\r\n";
 fputs($fp, $REQUEST);
 while ($s=fgets($fp, 10240) and strlen($s)>2) addheader($s);
 $capt_time = getmicrotime()-$start_time;
 while ($s=fgets($fp, 10240)) $cash .= $s;
 fclose($fp);
 echo ereg_replace("<!--metime-->", "Страница сгенерирована за ".substr(getmicrotime()-$start_time, 0, 6)." (".substr($connect_time, 0, 4)."/".substr($capt_time, 0, 4).") сек.", $cash);


А занимается он тем что получает через php скрипт запрос форума и повторяет этот запрос CGI скрипту, и возвращает пользователю результат работы CGI скрипта... Причём поддерживается эмуляция запросов люого типа (POST, GET, OPTIONS) и также не теряет при работе ни куки, ни служебныю информацию в заголовках в отличии от выше описанных методов biggrin.gif

PS: А ещё если в документе встречает конструкцию '<!--metime-->' то вставляет туда инфу о том, за сколько сгенерирована страница...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)