نقل قول: thumbnail در php
خط اول برای خوندن تصویر JPEG شما هست که باید از مسیر تصاویر اصلی خونده بشه (اگه نوع تصویر فرق میکنه، از تابع مناسب مثل imagecreatefrompng و... استفاده کنید). خط دوم پهنای تصویر اصلی رو بدست میاره. خط سوم ارتفاع تصویر اصلی رو مشخص میکنه. خط چهارم پهنای تصویر پیشنمایش رو مشخص میکنه (باید بجای thumbWidth$ پهنا رو مشخص کنید). خط پنجم با توجه به نسبت ارتفاع به پهنای تصویر اصلی، ارتفاع تصویر پیشنمایش رو نسبت به پهناش محاسبه میکنه. خط ششم یک تصویر جدید با پهنا و ارتفاع پیشنمایش میسازه. خط هفتم تصویر اصلی رو با اندازه های جدید، در تصویر پیشنمایش کپی میکنه. خط هشتم تصویر پیشنمایش رو در مسیر تصاویر پیشنمایش با نوع JPEG ذخیره میکنه. مثالی از کاربرد کد شما:
<?php
$img = imagecreatefromjpeg('../images/photo1.jpg');
$width = imagesx($img);
$height = imagesy($img);
// calculate thumbnail size
$new_width = 100;
$new_height = floor($height * ($thumbWidth / $width));
// create a new temporary image
$tmp_img = imagecreatetruecolor($new_width, $new_height);
// copy and resize old image into new image
imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// save thumbnail into a file
imagejpeg($tmp_img, '../thumbs/photo1.jpg');
?>
نقل قول: thumbnail در php
خیلی ممنون
پس من باید این کار و قبل از گرفتن محتوای فایلم انجام بدم درسته؟
این کد من هست که بعد از اینکه type, mime, imagtype , فرمت و ... فایل و چک کردم با این قسمت محتوای فایلم و میگیرم و در نهایت تو دیتابیس ذخیره میکنم، الان نمیدونم باید با این کد بالا چه جوری با این کار کنم
<?php
$pictype=(get_magic_quotes_gpc()==0 ? mysql_real_escape_string(
$_FILES['pic']['type']) : mysql_real_escape_string(
stripslashes ($_FILES['pic'])));
$fp = fopen($pictmp, 'r');
$piccontent = fread($fp, filesize($pictmp));
$piccontent = addslashes($piccontent);
fclose($fp);
if(!get_magic_quotes_gpc())
{
$picname = addslashes($picname);
}
?>
یعنی با کد بالا
$_FILES['file']['name']; = $tmp_img
و
$tmp_img = '../thumbs/photo1.jpg'
میشه؟
ممنونم
نقل قول: thumbnail در php
بهتره برای امنیت بیشتر، خود تصویر رو هم با GD ذخیره کنید نه با fopen و یا move_uploaded_file و سایر روشهای مرسوم.
نقل قول: thumbnail در php
خیلی ممنونم
میشه لطف کنید بگید fopen یا move_upload_file از نظر امنیتی چه مشکلی دارن؟
حقیقتش جواب سوالم و نگرفتم تو کدی که گذاشتم این تغییر و باید قبل از گرفتن محتوای فایل انجام بدم یا بعدش؟ ممنون
نقل قول: thumbnail در php
مشکل اینه که اگه کد PHP توی فایل باشه، اون کدها هم توی فایلی که در پوشه تصاویر کپی میشه، باقی میمونه ولی اگه با GD تصویر رو بخونیم و یک نسخه جدید از روش تولید کنیم، کدهای PHP و... داخل تصویر حذف میشه.
نقل قول: thumbnail در php
مرسی
حتی اگه هم mime ، type ... هم بررسی بشه باز هم میشه تو اون عکس کد پی اچ پی باشه؟
یعنی میشه فایلی mime عکس یا پی دی اف و وررد داشته باشه باز هم محتواش کد پی اچ پی باشه؟
نقل قول: thumbnail در php
بله. MIME از روی پسوند انتخاب میشه. حتی در سیستمهایی که بطور هوشمند ازروی هدر فایلها، MIME رو تشخیص میدن هم میشه بعد از اینکه فایل سالم ساخته شد، با کمک یکسری ابزارهای خاص مثل Hex Editorها و... کدهای موردنظر رو در قسمت Data تزریق کرد.
نقل قول: thumbnail در php
مرسی خیلی ممنونم
ببخشید یه سوال دیگه هم دارم
GD فقط برای تصاویر هست یا فایل ها متنی مثل pdf docx... هم ازش استفاده میشه؟
یه سوال دیگه اینکه برای هدر صفحه ای که میخوام فایل ها رو نمایش بدم چه عکس چه فایل های متنی، باید type و در نظر بگیرم برای هدر یا mime فایل را در نظر بگیرم؟
مرسی
نقل قول: thumbnail در php
درمورد سؤال اول، GD فقط برای تصاویر کاربرد داره و برای PDF و... کلاسهای مناسب دیگه نوشته شده مثل PHPExcel و PDFLib و TCPDF و...
درمورد سؤال دوم هم باید MIME رو در تابع header تنظیم کنید. بطور کلی هدرها با MIME سروکار دارن و پسوند اهمیتی نداره چون فقط ویندوز به پسوند حساسه و در سایر سیستمهای عامل، از روی MIME و هدرهای فایلها، نوعشون تشخیص داده میشه.
نقل قول: thumbnail در php
خیلی ممنون
type منظورم چیزی هست که از $_FILES['file']['type'] میگیریم بود،
یه سوال دیگه اینکه توی لوکال فایلی و آپلود میکنم و mime که بهم نشون میده با چیزی که همون فایل و رو اینترنت آپلود میکنم و نشون میده فرق داره واسه همین اون صفحه ای و که برای نمایش فایل دارم با اینکه برای هدر Mime و در نظر گرفتم فایل و تو لوکال نشون میده ولی توی اینترنت بهم نشون نمیده، باید تو این مواقع چی کار کنم؟ مرسی
نقل قول: thumbnail در php
یه سوال دیگه هم دارم ببخشید
برای فایل هایی که در اصل php هستند ولی ظاهرشون عکس هست، اصلا این فایل ها چه حوری ساخته میشن؟ یعنی چطوری میشه یه فایل php رو یا تبدیل کرد به عکس بغیر از اینکه بخوایم فقط اسمشونو تغییر بدیم؟ و یا چه طور میشه کد php رو توی عکس بگنجونیم؟ مرسی
نقل قول: thumbnail در php
اون type که میگین، همون MIME هست. من فکر کردم پسوند فایل رو میگین. درمورد سؤال بعدی هم که فکر میکنم یه جای دیگه هم مطرح شده بود، علتش اینه که سرورتون به احتمال زیاد لینوکس هست و MIME برخی فایلها مثل docx و... توی ویندوز و لینوکس فرق میکنه. شما باید طبق اطلاعات Agent کاربر، MIME مناسب رو براش تنظیم کنید. مقصر این ناهماهنگیها هم فقط و فقط مایکروسافته!
نقل قول: thumbnail در php
مرسی
مقداری که از $_FILES['file']['type']; و mime_content_type($_FILES['file']['tmp_name']); میگیرم دو تا مقدار جدا هست، پس فرق mime و type چیه؟
بله خودم پرسیده بودم این سوال رو، "طبق اطلاعات Agent کاربر" یعنی چی؟
بازم یه سوال دیگه ببخشید، برای validation ها، چه کاراکتری هست که باید از ورودشون جلوگیری کنم تا نشه کد php وارد فرم های ورودی بشه؟
مرسی
نقل قول: thumbnail در php
دقت کنید که اولی بر اساس پسوند فایل داره تصمیم میگیره و دومی بر اساس اطلاعاتی که در یک فایل به اسم magic.mime در PHP ذخیره شده و ضمناً تاع mime_content_type منسوخ شده و بهتره از Extension مخصوص این کار یعنی FileInfo استفاده کنید؛ هرچند همون اندیس type فایل آپلود شده کفایت میکنه. اطلاعات Agent کاربر هم توسط ['SERVER['HTTP_USER_AGENT_$ قابل دستیابیه.
نقل قول: thumbnail در php
مرسی
دستور echo $_SERVER['SERVER_NAME']; توی لوکال فقط بهم میده "localhost" و روی اینترنت میده "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36" از این دیتا چه جوری باید تشخیص بدم که چه Mime در نظر بگیرم؟
نقل قول: thumbnail در php
این اطلاعات داره میگه ویندوز 7 نسخه 64 بیتی دارین و مرورگر شما Chrome نسخه 30.0.1599.69 هست. قبلاً یک کلاس برای تشخیص مرورگر و سیستم عامل از روی User Agent نوشته بودم که اگه توی تالار جستجو کنید، پیداش میکنید.
نقل قول: thumbnail در php
کلاً Agent اگه خواستین ببینید چی میگه، تو این سایت وارد کنید:
http://www.useragentstring.com
نقل قول: thumbnail در php
نقل قول: thumbnail در php
مرسی
راستش من متوجه نشدم الان این Agent چه ربطی داره به این موضوع، یعنی رو هر دستگاه با توجه به نوع سیستم عامل و بروزر، نوع هدری که در نظر میگیره فرق داره؟