1)Заменяем getimagesize на CURL. 2)Заменяем get_headers на CURL.
Иногда для увеличения безописности отключают PHP: allow_url_fopen.
В этом случае не работают многие нужные функции... Например: getimagesize и getheaders. Пишем альтернативу на Curl.
1)Заменяем getimagesize на CURL.
#---------------------------------------------------------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
////////////////////////// getimagesize_curl ///////////////////////
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
#везде заменены getimagesize на эту ф-ю
#-------------- getimagesize new wersion by CURL
function getimagesize_curl($file){
#get_mime_type_curl
$ch = curl_init($file);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1) ;
$ch_content = curl_exec($ch);
if(!curl_errno($ch))
{
# $ch_image = curl_getinfo($ch); // used nije
$ch_image= curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
}
curl_close($ch);
#get_mime_type_curl
#getimagesize curl------------------
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $image);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5);
$ch_file_contents = curl_exec($ch);
curl_close($ch);
$ch_new_image = ImageCreateFromString($ch_file_contents);
switch ($ch_image) {
case 'image/jpeg': imagejpeg($ch_new_image, "temp.jpg",100); break;
case 'image/gif': imagegif($ch_new_image, "temp.jpg",100); break;
case 'image/png': imagepng($ch_new_image, "temp.jpg",100); break;
case 'image/jp2': imagewbmp($ch_new_image, "temp.jpg",100); break;
}//switch ($ch_image) {
// Get new dimensions
$info = getimagesize("temp_curl.jpg");
@unlink("temp_curl.jpg");
return $info;
}; //function getimagesize_curl($file){
#getimagesize curl------------------
#-------------- getimagesize new wersion by CURL
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
////////////////////////// getimagesize_curl ///////////////////////
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
#---------------------------------------------------------------------------------------------------------------------
|
Вместо getimagesize вызываем getimagesize_curl, по идее покажет правльно. Есть сминусы - если много больших катинок, то загрузка замедляется.
2)Заменяем get_headers на CURL.
С get_headers все проще и быстрее.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
$Headers = curl_exec($ch);
curl_close($ch);
|
$URL - ссылка к файлу.
Теперь мы можем прорить наличие файла вот так:
if(strpos($Headers, '200')) {
#ФАЙЛ НАЙДЕН
} else {
#нету
};
|
Автор: Бабий Никита Юрьевич