2015-02-15 2 views
-1

Я использую код ниже, и он работает для меня, но большинство из нас знает, что мы не можем доверять fopen, потому что это не всегда хорошо работает на внешних файлах. Итак, мой вопрос заключается в том, какие другие методы я могу использовать для проверки наличия внешнего URL-адреса?Каковы лучшие способы проверки наличия внешнего файла образа?

Я знаю, что это можно сделать с помощью cURL, и я мог проверить размер изображения, но мне было интересно, как другие кодеры разрешат это и как лучше всего это сделать.

Обязательно: Если изображение доступно, эхо-код изображения и если изображение не доступно, эхо-код текстовой ссылки, как в приведенном ниже рабочем примере.

<?php 
// Set the beyondsecurity.com image URL you want to connect to... 
$url = "https://secure.beyondsecurity.com/verification-images/www.largevideotube.com/vulnerability-scanner-2.gif"; 
// Check to see if the beyondsecurity.com image URL exists by trying to open it for read only.. 
if (fopen($url, "r")) { 
// echo the beyondsecurity.com image link if I was able to open the beyondsecurity.com image URL for read only.. 
echo '<a href="http://www.beyondsecurity.com/vulnerability-scanner-verification/www.largevideotube.com"><img src="https://secure.beyondsecurity.com/verification-images/www.largevideotube.com/vulnerability-scanner-2.gif" alt="Website Security Test" /></a>'; 
} else { 
// echo a text link if it took to many time to open the file or if it wasn't there at all.. 
echo '<a href="http://www.beyondsecurity.com/vulnerability-scanner-verification/www.largevideotube.com">Website Security Test</a>'; 
} 
?> 
+0

file_exists() работает на удаленных серверах до –

+0

Определите «лучше». Что случилось с тем, что у вас есть? –

+0

@ Dagon: Да, я знаю, но 'file_exists()' также не всегда находится на внешних файлах. – jagb

ответ

-1

Я бы сделал HTTP-запрос и проверил код состояния ответа и заголовки ответов. Если вы получите ответ 200, это означает, что ваш запрос был в порядке. Вы можете проверить заголовок Content-Type, чтобы увидеть, является ли контент изображением. Затем вы можете делать все, что хотите, с телом ответа, который для ответа 200 будет изображением. Если вы получаете ответ 4XX или 5XX, то что-то пошло не так, или изображение не может быть найдено. Вы можете сделать это с помощью cURL или одной из удивительных библиотек для создания HTTP-запросов/ответов, таких как Guzzle.

Смежные вопросы