У меня есть сайт на http://www.reelfilmlocations.co.uk
На вышеуказанном сайте есть область администрирования, где загружаются изображения и копии разных размеров, созданные в подпапках каталога uploads / images.
Я создаю сайт для мобильных устройств, которые будут работать в поддомене, но используют базу данных и изображения из основного домена, http://2012.reelfilmlocations.co.uk
Я хочу иметь доступ к изображениям, которые находятся в родительском домене, что я могу сделать, связав их с изображением с полным доменом, то есть http: www.reelfilmlocations.co.uk/images/minidisplay/myimage.jpg
Хотя мне нужно проверить, существует ли первое изображение …
У меня есть функция php, которая проверяет, существуют ли изображения, если она возвращает полный URL-адрес изображения.
Если он не существует, я хочу вернуть путь к образцу-заполнителю.
Следующая функция i возвращает правильное изображение, если оно существует, но если это не так, оно просто возвращает путь к каталогу, в котором находится образ-заполнитель, т.е. http://www.reelfilmlocations.co.uk/images/thumbs/
. без no-image.jpg бит.
Эта страница: http://2012.reelfilmlocations.co.uk/browse-unitbases/ код, который у меня есть на моей странице, чтобы получить изображение:
<img src="<?php checkImageExists('/uploads/images/thumbs/', $row_rs_locations['image_ubs']);?>">
Моя php-функция:
if(!function_exists("checkImageExists")){ function checkImageExists($path, $file){ $imageName = "http://www.reelfilmlocations.co.uk".$path.$file; $header_response = get_headers($imageName, 1); if(strpos($header_response[0], "404" ) !== false ){ // NO FILE EXISTS $imageName = "http://www.reelfilmlocations.co.uk".$path."no-image.jpg"; }else{ // FILE EXISTS!! $imageName = "http://www.reelfilmlocations.co.uk".$path.$file; } echo($imageName); } }
Если не получится, чтобы это сработало, я кое-что погубил и прочитал несколько сообщений о завитке:
Это просто возвращает образ заполнителя каждый раз.
if(!function_exists("remoteFileExists")){ function remoteFileExists($url) { $curl = curl_init($url); //don't fetch the actual page, you only want to check the connection is ok curl_setopt($curl, CURLOPT_NOBODY, true); //do request $result = curl_exec($curl); $ret = false; //if request did not fail if ($result !== false) { //if request was ok, check response code $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); if ($statusCode == 200 ) { $ret = true; } } curl_close($curl); return $ret; } } if(!function_exists("checkImageExists")){ function checkImageExists($path, $file){ $imageName = "http://www.reelfilmlocations.co.uk".$path.$file; $exists = remoteFileExists($imageName); if ($exists){ // file exists do nothing we already have the correct $imageName } else { // file does not exist so set our image to the placeholder $imageName = "http://www.reelfilmlocations.co.uk".$path."no-image.jpg"; } echo($imageName); } }
Я не знаю, может ли это быть связано с получением 403, или как проверить, так ли это.
любые указатели или вещи, которые я мог бы попробовать, были бы весьма благодарны.
Я бы сделал это, используя CURL, выдав запрос HEAD и проверив код ответа.
Не проверен, но должен сделать трюк:
$URL = 'sub.domain.com/image.jpg'; $res = `curl -s -o /dev/null -IL -w "%{http_code}" http://$URL`; if ($res == '200') echo 'Image exists';
Приведенный выше код заполнит $res
кодом состояния заявки (обратите внимание, что я НЕ включаю префикс http://
в переменную $URL
потому что я делаю это в командной строке.
Конечно, то же самое можно было бы получить с помощью функций PHP CURL, и вышеупомянутый вызов может не работать на вашем сервере. Я просто объясняю, что я буду делать, если бы у меня была такая же потребность.