|
|
|
| Есть очень большой файл - который доступен по веб урл http://.....com/papka/file.txt
Качать весь файл мне не нужно. А лишь установить доступен он или нет. Т.е. если я правильно понял получить заголовок. 200 это успешно если что иное например 505 то файл не доступен..
Помогите пожалуйста осуществить проверку ответа от сервера..
Спасибо ! | |
|
|
|
|
|
|
|
для: AlexDIXI
(11.07.2008 в 11:21)
| | Если вам доступен PHP 5, удобно воспользоваться функцией get_headers(), которая возвращает HTTP-заголовки с удаленного сервера, в том числе и код ответа. | |
|
|
|
|
|
|
|
для: cheops
(11.07.2008 в 11:24)
| | угу, но а если не доступно пхп5? | |
|
|
|
|
|
|
|
для: AlexDIXI
(11.07.2008 в 11:41)
| | Вызов, предложенный cheops'ом, отправит GET-запрос.
В версии 5.1.3 и выше вроде как можно изменить контекст запроса, и то фиг знает, получится ли.
По умолчанию всяко пройдет GET.
HEAD придется брать ручками. Как - можно поглядеть в задачах (Задача N13 - )
http://www.softtime.ru/info/task.php?id_article=83
2 Administrartors : приведенного URL почему-то нет в общем списке задач.... | |
|
|
|
|
|
|
|
для: Trianon
(11.07.2008 в 12:09)
| | >2 Administrartors : приведенного URL почему-то нет в общем списке задач....
Спасибо, поправили. | |
|
|
|
|
|
|
|
для: cheops
(13.07.2008 в 09:30)
| | Ребята низкий поклон! Что б я без вас делал.. Столько перспектив впереди.. | |
|
|
|
|
|
|
|
для: AlexDIXI
(11.07.2008 в 11:21)
| |
<title>Просмотр заголовков</title>
<form action="?do" method="post">
Введите адрес:<br><br><input type="Text" name="adress" size="40"><input type="Submit" value="Показать заголовки">
</form>
<?
if(isset($_GET['do']) && isset($_POST['adress']) && !empty($_POST['adress'])) {
$filepath = trim($_POST['adress']);
if (!preg_match('/^https?|ftps?/si', $filepath)) $filepath = 'http://' . $filepath;
// Делим путь к файлу на хост и "хвост" (для сокетов)
preg_match('/\\b(?P<protocol>https?|ftp):\/\/(?P<domain>[-A-Z0-9.]+)(?P<file>\/[-A-Z0-9+&@#\/%=~_|!:,.;]*)?(?P<parameters>\\?[-A-Z0-9+&@#\/%=~_|!:,.;]*)?/i', $filepath, $path_details);
// Проверяем, верен ли введённый адрес
if(isset($path_details['domain']) && !empty($path_details['domain'])) {
$filehost = $path_details['domain'];
} else {
echo "Введённый адрес некорректен !";
exit;
}
// Если "хвост" пуст, заполняем пустоту слешем, что бы не сглючили сокеты
if(isset($path_details['file']) && !empty($path_details['file'])) {
$filepath = $path_details['file'];
} else {
$filepath = "/";
}
// Подключаемся к файлу через сокеты
$fp = @fsockopen($filehost, 80, &$errno, &$errstr, 30) or die("Ошибка подключения к серверу");
$headers = array();
$headers[] = "HEAD $filepath HTTP/1.0\n";
$headers[] = "HOST: $filehost\n";
$headers[] = "Connection: close\n\n";
fputs($fp, implode('', $headers));
$tmp = "";
while (!feof($fp)) {
$tmp .= fgets($fp, 4096);
}
echo '<hr />'.nl2br(implode('', $headers)).'<hr />'.nl2br($tmp);
fclose($fp);
}
|
| |
|
|
|