Ошибка перехвата URL изображения - PullRequest
0 голосов
/ 06 февраля 2009

Я пытаюсь проверить, существует ли URL-адрес или нет, и сбросьте переменную, содержащую URL-адрес, на страницу / изображение ошибки. Однако моя попытка ниже устанавливает каждый экземпляр PIC_URL равным noimage.gif, независимо от того, существует он и доступен или нет. Чего мне не хватает?

if (@fopen($_REQUEST[$PIC_URL],"r")) 
{
$status = "1";
} 
else  if (!(@fopen($_REQUEST[$PIC_URL],"r"))
{

$status = "2"; 
}

if ( $status == "2" ) $PIC_URL = "http://www.tricityhomes.com/assets/images/noimage.gif";

Ответы [ 3 ]

1 голос
/ 06 февраля 2009

Возможно, вы захотите попробовать сделать что-то похожее на это

<?php
function url_exists($url) {
    // Version 4.x supported
    $handle   = curl_init($url);
    if (false === $handle)
    {
        return false;
    }
    curl_setopt($handle, CURLOPT_HEADER, false);
    curl_setopt($handle, CURLOPT_FAILONERROR, true);  // this works
    curl_setopt($handle, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15") ); // request as if Firefox   
    curl_setopt($handle, CURLOPT_NOBODY, true);
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, false);
    $connectable = curl_exec($handle);
    curl_close($handle);  
    return $connectable;
}
?>

Источник: http://uk.php.net/manual/en/function.file-exists.php#85246

причина в том, что, как уже упоминалось, проверка исходного значения fopen - не лучшая идея, а также то, что метод не учитывает перенаправление на страницы ошибок и т. Д.

0 голосов
/ 06 февраля 2009

Тест в другой части выглядит избыточным, и вы имели в виду $_REQUEST['PIC_URL']?

if (@fopen($_REQUEST['PIC_URL'],"r")) 
{
    $status = "1";
} 
else
{

    $status = "2"; 
}

Впрочем, с этим гораздо больше проблем. Чтобы проверить, существует ли удаленный файл, вам лучше использовать file_exists или даже использовать собственный метод для выполнения запроса HEAD.

0 голосов
/ 06 февраля 2009

используйте file_exists или is_readable и не используйте необработанное значение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...