Добрый вечер.
У меня вот какой вопрос:
Это с php связано.
Скачивать файлы с сайтов при помощи php понятно как.
А мне нужно чтобы скрипт сделал запрос к серверу с параметрами:
www.anysite.com?<параметры>
И ответ в виде файла html или txt нужно сохранить в папке где находится сам
скрипт присвоив ему какое-нибудь имя.
Здравствуйте, Serheyka, Вы писали:
S>Добрый вечер.
S>У меня вот какой вопрос:
S>Это с php связано.
S>Скачивать файлы с сайтов при помощи php понятно как.
S>А мне нужно чтобы скрипт сделал запрос к серверу с параметрами:
S>www.anysite.com?<параметры>
S>И ответ в виде файла html или txt нужно сохранить в папке где находится сам
S>скрипт присвоив ему какое-нибудь имя.
fopen
Здравствуйте, Serheyka, Вы писали:
S>Добрый вечер.
S>У меня вот какой вопрос:
S>Это с php связано.
S>Скачивать файлы с сайтов при помощи php понятно как.
S>А мне нужно чтобы скрипт сделал запрос к серверу с параметрами:
S>www.anysite.com?<параметры>
S>И ответ в виде файла html или txt нужно сохранить в папке где находится сам
S>скрипт присвоив ему какое-нибудь имя.
Если в кратце то fopen
Здравствуйте, Serheyka, Вы писали:
S>Добрый вечер.
S>У меня вот какой вопрос:
S>Это с php связано.
S>Скачивать файлы с сайтов при помощи php понятно как.
S>А мне нужно чтобы скрипт сделал запрос к серверу с параметрами:
S>www.anysite.com?<параметры>
S>И ответ в виде файла html или txt нужно сохранить в папке где находится сам
S>скрипт присвоив ему какое-нибудь имя.
Многие приведут тут простейший пример вроде этого:
file_put_contents($filename, file_get_contents($uri));
но т.к. не во всех версиях php это работает, да и не мешает разжевать внутреннюю работу функций, то приведу более полный пример:
<?php
function get_url_components($address) {
$url_checking_regexp_proto = "((http|ftp)\\:\\/\\/)";
$url_checking_regexp_hname = "[a-z\\d]([a-z\\d\\_\\-]*[a-z\\d])?";
$url_checking_regexp_host = "($url_checking_regexp_hname([\\.]$url_checking_regexp_hname)*[\\.][a-z]{2,4})";
$url_checking_regexp_port = "(:(\\d*))?";
$url_checking_regexp_path = "([\\/])?([^\\s\\<\\(\\)]*)?";
$url_checking_regexp = "/$url_checking_regexp_proto$url_checking_regexp_host$url_checking_regexp_port$url_checking_regexp_path/im";
if (!preg_match($url_checking_regexp, $address, $matches)) return FALSE;
$proto = $matches[2];
$host = $matches[3];
$port = ($matches[8])?$matches[8]:80;
$path = $matches[9].$matches[10];
if (strlen(trim($path))==0) $path='/';
return array($proto, $host, $port, $path);
}
function get_url_text($address, $timeout=10) {
$url_arr = get_url_components($address);
if (!is_array($url_arr) || strtolower($url_arr[0])!='http') return '';
$fp = fsockopen ($url_arr[1], $url_arr[2], $errno, $errstr, $timeout);
if (!$fp) return '[error: failed open socket!]';
$host = $url_arr[1].(($url_arr[2]==80)?"":":".$url_arr[2]);
fwrite($fp, "GET ".$url_arr[3]." HTTP/1.0\n");
fwrite($fp, "Host: $host\n");
fwrite($fp, "Referer: http://$host/\n");
fwrite($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)\n");
fwrite($fp, "Pragma: no-cache\n");
fwrite($fp, "Cache-Control: no-cache\n");
fwrite($fp, "Connection: close\n");
fwrite($fp, "\n");
$res_arr = array();
$hd_arr = array();
while (!feof($fp)) {
$str = fgets($fp, 1024);
if (strlen(trim($str))==0) break;
array_push($hd_arr, $str);
}
while (!feof($fp)) array_push($res_arr, fread($fp, 1024));
fclose ($fp);
return implode('', $res_arr);
}
function put_file_contents($filename, $contents='') {
if (file_exists($filename)) unlink($filename);
if (!($fp = fopen ($filename, "w"))) return '[error: failed open file!]';
fwrite ($fp, $contents);
fclose ($fp);
}
header("Content-Type: text/plain; charset=windows-1251");
$url = trim(stripslashes($url));
if (strlen($url)==0) $url = "http://911.ru/debug";
$contents = get_url_text($url);
print($contents);
put_file_contents("./writezone/dnl.txt", $contents);
? >
Скрипт:
http://911.ru/to_rsdn/get_url_contents.php
Результат работы(обновляется после каждого запроса):
http://911.ru/to_rsdn/writezone/dnl.txt
Исходник:
http://911.ru/to_rsdn/get_url_contents.php.html
Скрипту можно указать параметр url, например:
http://911.ru/to_rsdn/get_url_contents.php?url=http://rsdn.ru
если параметр не указан, по умолчанию подставляется
http://911.ru/debug
P.S. естесственно, т.к. писал сходу, возможны мелкие ошибки и неточности в алгоритмах.