PDA

View Full Version : چرا تابع GetImageSize مقدار نادرست برمی گیردونه؟



idocsidocs
جمعه 27 آبان 1390, 17:34 عصر
با توجه به آینکه تصویر توی سرور وجود دار و آدرسش به درستی وارد شده، چرا تابع GetImageSize مقدار نادرست برمی گیردونه؟



if (!@GetImageSize($url) )
{
return false;
}

pejman_view
جمعه 27 آبان 1390, 17:58 عصر
سلام

نگاه کنید تابع GetImageSize یک آرایه می سازه به مثال زیر توجه کن



<?php
$size = getimagesize('1.jpg');
echo $size['0']; //return width
echo $size['1']; //return height
echo $size['2']; //return format code
/*
1 = GIF 5 = PSD 9 = JPC 13 = SWC
2 = JPG 6 = BMP 10 = JP2 14 = IFF
3 = PNG 7 = TIFF(intel byte order) 11 = JPX 15 = WBMP
4 = SWF 8 = TIFF(motorola byte order) 12 = JB2 16 = XBM
*/
echo $size['mime'] //return mime type

?>

aghasoroush
جمعه 27 آبان 1390, 18:04 عصر
خیلی زور داره که یکی که سوال نکرده بخاطر پاسخ دهی خوب ی نفر تشکر کنه:دی

idocsidocs
جمعه 27 آبان 1390, 18:42 عصر
نگاه کنید تابع GetImageSize یک آرایه می سازه به مثال زیر توجه کنمن فقط می خوام چک کنم که فایل یه تصویر هست یا نه و کاری با طول و عرض تصویر ندارم.

با دستورات شرطی چطور باید چک کنم که خروجی این تابع نشان دهنده اینه که فایل داده شده درست هست؟



خیلی زور داره که یکی که سوال نکرده بخاطر پاسخ دهی خوب ی نفر تشکر کنه:دی


دوست عزیز اگه پول می دادی چی می شد !:چشمک:

aghasoroush
جمعه 27 آبان 1390, 20:01 عصر
دوست من فک کنم بخاطر اینه که دارین از آدرس ریموت عکسو باز میکنید
به گمونم باید عکس کنار فایل پی اچ پی باشه

aghasoroush
جمعه 27 آبان 1390, 20:04 عصر
واای نه ببخشید اشتبا گفتم. شما اسم تابع رو دارین اشتباه مینویسین و پی اچ پی حساس به حروف کوچیک و بزرگه
این تابعی که شما داری صدا میزنی در حقیقت وجود نداره اصلا

idocsidocs
جمعه 27 آبان 1390, 20:19 عصر
واای نه ببخشید اشتبا گفتم. شما اسم تابع رو دارین اشتباه مینویسین و پی اچ پی حساس به حروف کوچیک و بزرگه
این تابعی که شما داری صدا میزنی در حقیقت وجود نداره اصلا
چطور باید صدا بزنم؟

پی اچ پی به اسم توابع حساس نیست و توابع رو می شه هم با حروف یزرگ و هم با حروف کوچیک نوشت (البته دقیقا یادم نیست).

aghasoroush
جمعه 27 آبان 1390, 23:54 عصر
حق با شما بود من اشتباه گفتم
حساس نیست
نمیدونم چرا یادم نبود به هر حال شما ببخشید

ببینید دوست من تابع getimagesize مقدار true یا فالس تا اونجا که میدونم نمیده
یا خالیه یا پر
من این کد رو الان تست کردم جواب داد
بهتره که مقدارش رو برسی کنید که آیا خالیه یا نه
درضمن مقدار برگشتی این تابع به صورت آرایه هستش

<?php
/**
* @author Soroush
* @copyright 2011
*/
$a = @getimagesize("http://localhost/pic.jpg");
if ($a == "" )
{
return false;
}
else echo "salam";
?>
موفق باشید

idocsidocs
شنبه 28 آبان 1390, 00:18 صبح
درضمن مقدار برگشتی این تابع به صورت آرایه هستش

اگر آدرس اشتابه بهش دادیم چی بر می گردونه؟

یعنی هیچ استانداردی نیست که بدونیم باید با خروجی این تابع چیکار کرد؟

aghasoroush
شنبه 28 آبان 1390, 00:26 صبح
اگه آدرس اشتباه بدین مقدار خالی برمیگردونه و اگه @ رو نذارین ارور میده
منظورتون چیه دوست من
بگین دقیق میخواین چیکار کنید تا اگه بلدم بهتون راه کار بدم

idocsidocs
شنبه 28 آبان 1390, 00:56 صبح
منظورتون چیه دوست منمی خوام چک کنم که فایل داده شده یه تصویر هست یا نه.

pejman_view
شنبه 28 آبان 1390, 01:06 صبح
سلام

اگر آدرس اشتباه بدی یا خطایی رخ بده false بر می گرداند



$size = getimagesize("http://www.example.com/1.gif");
if ($size){
echo $size[mime];
}else{
echo 'error';
}

aghasoroush
شنبه 28 آبان 1390, 01:25 صبح
می خوام چک کنم که فایل داده شده یه تصویر هست یا نه.
همون طور که خدمتتون عرض کردم مقدار بازگشتی به صورت آرایه هستش و شامل چند تا ایندکس هست
شما بهتره با مقادیر آرایه کار کنی
مثلا شرط بذاری که اگه عنصر اول آرایه خالی بود این عکس نیست
یا همون طور که دوست خوبمون اشاره کرد به این شکل:


$size = getimagesize("http://www.example.com/1.gif");
if ($size[mime] == "" && $size[3] == "" ){
echo "No image detected!";
}else{
echo "This file is an image;) ";
}

این راه خیلی مطمینه و غیر حرفه ای اما من اگه بخوام استفاده کنم ازین استفاده میکنم چون به هیچ وجه پیچونده نمیشه و xss نمیشم

aghasoroush
شنبه 28 آبان 1390, 01:33 صبح
یه پیشنهاد دارم براتون که با تابع print_r خروجی های تابع getimagesize رو چک کنید و ببینید که ایندکس ها ی آرایه به چه صورت هستن
این طوری قضیه براتون ملموس تر میشه

راستی بابت حرف بدی که توی چند تا پست قبل زدم ببخشید
موفق باشید:قلب: