P.H.P.
سه شنبه 16 شهریور 1389, 16:39 عصر
این آموزش ادامه قسمت اول روش ذخیره تصاویر در بانک اطلاعاتی است
همانطور که گفته شد این روش برای ذخیره تصاویر خاص مانند ذخیره: تصویر کاربر، لوگو و تصاویر کم حجم بیشتر استفاده خواهد شد.
حتما طبق روش قبل حجم تصویر و سایز آن را محدود کنید.
خوب اول از همه باید ارتباط با پایگاه داده را انجام دهیم؛ که این در آموزشهای قبل مختصر توضیح داده شد. برای اطلاعات بیشتر کلیک کنید. (http://www.vvolf.net/Action/programming/%d8%a7%d8%b1%d8%aa%d8%a8%d8%a7%d8%b7-%d8%a8%d8%a7-mysql-%d8%af%d8%b1-php/)
همانطور که به یاد دارید در قسمت اول این آموزش، در هنگام طراحی جدول فیلدی برای نوع فایل به اسم imgType معرفی کردیم، این فیلد برای نمایش یا دانلود فایل نقش بسیار مهمی دارد.
من نمایش فایل را با استفاده از فایل image.php انجام خواهم داد، برای مثال اگر بخوایم رکورد 2 را نمایش دهیم به این صورت عمل میکنیم
image.php?id=2
به این صورت هر شماره ورودی در متد id تصویر آن رکورد را نمایش میدهد
http://www.vvolf.net/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif
برای دریافت ورودی از GET استفاده میکنیم
$image = $_GET["id"];
در نتیجه ورودی در متغیر image قرار میگیرد
این به تنهایی اصلا صحیح نیست، و میتواند مشکلات امنیتی از نظیر SQL Injection به وجود آورد پس باید ورودی را کنترول و محدود کنیم، ما در اینجا از تابع intval استفاده کردیم، شما میتوانید از filter در php یا توابع پاکسازی اعداد برای این کار استفاده کنید. (پس حتما در qeury پاکسازی را انجام دهید.)
به کد زیر دقت کنید و آن را در فایل image.php ذخیره کنید:
<?php
$id = intval($_GET["id"]);
if(isset($id))
{
$query = "SELECT * FROM tblImages WHERE imgID = '$id'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
if(mysql_num_rows($result) == 1)
{
header("Content-Type: " . $row["imgType"]);
exit($row["imgImage"]);
}
else
{
$path = "images/notfound.jpg";
$image = imagecreatefromjpeg($path);
header("Content-Type: image/jpeg");
imagejpeg($image);
imagedestroy($image);
}
}
?>
شرط ما برای نمایش:
$id = intval($_GET["id"]);
if(isset($id))
isset: تعیین کننده ی قرارگرفتن مقدار در متغیر است؛ در صورتی که قرار گرفته باشد این مقدار True خواهد شد در غیر این صورت False میشود.
intval: مقدار عدد صحیح یک متغیر را دریافت میکند.
از mysql_num_rows برای موجود بودن درخواست استفاده کردیم
if(mysql_num_rows($result) == 1)
در این شرط ما گفتیم در صورتی که query گرفته شده برابر با 1 (موجود بودن رکورد) بود آنگاه ....
header("Content-Type: " . $row["imgType"]);
exit($row["imgImage"]);
تابع header برای ارسال هیدر در شناسایی نوع محتوا کاربرد دارد.
Content-Type: مشخص کردن در شناسایی نوع خروجی، این نوع از رکورد انتخاب شده از فیلد imgType مشخص میشود.
exit: نمایش خروجی و خاتمه ی اسکریپت
حالا اگر رکورد وجود نداشت چکار باید انجام دهیم؟
$path = "images/notfound.jpg";
$image = imagecreatefromjpeg($path);
header("Content-Type: image/jpeg");
imagejpeg($image);
imagedestroy($image);
در اینجا از GD برای نمایش تصویر Not Found استفاده میکنیم. تصویر notfound.jpg در پوشه images در صورتی که رکورد به هر دلیلی موجود نبود نمایش داده خواهد شد.
و در آخر برای نمایش تصاویر از کد HTML زیر استفاده خواهیم کرد.
<img src="image.php?id=2">
این تصویر نمایش رکورد 2 از بانک اطلاعاتی خواهد بود.
شاید بگویید که چرا سایز تصویر را در قسمت اول آموزش ذخیره کردیم؟، این فیلد را میتوانید برای مدیریت بهتر تصاویر داشته باشید یا اینکه بخواهید بخشی برای دانلود تصاویر از طریق بانک اطلاعاتی در سایت قرار دهید، با این حال میتوانید با قرار دادن "Content-Length" و "Content-Disposition: attachment" در تابع header بافراخوانی لینک، فایل را دریافت کنید.
منبع: http://www.Vvolf.net (http://www.vvolf.net/)
موفق
همانطور که گفته شد این روش برای ذخیره تصاویر خاص مانند ذخیره: تصویر کاربر، لوگو و تصاویر کم حجم بیشتر استفاده خواهد شد.
حتما طبق روش قبل حجم تصویر و سایز آن را محدود کنید.
خوب اول از همه باید ارتباط با پایگاه داده را انجام دهیم؛ که این در آموزشهای قبل مختصر توضیح داده شد. برای اطلاعات بیشتر کلیک کنید. (http://www.vvolf.net/Action/programming/%d8%a7%d8%b1%d8%aa%d8%a8%d8%a7%d8%b7-%d8%a8%d8%a7-mysql-%d8%af%d8%b1-php/)
همانطور که به یاد دارید در قسمت اول این آموزش، در هنگام طراحی جدول فیلدی برای نوع فایل به اسم imgType معرفی کردیم، این فیلد برای نمایش یا دانلود فایل نقش بسیار مهمی دارد.
من نمایش فایل را با استفاده از فایل image.php انجام خواهم داد، برای مثال اگر بخوایم رکورد 2 را نمایش دهیم به این صورت عمل میکنیم
image.php?id=2
به این صورت هر شماره ورودی در متد id تصویر آن رکورد را نمایش میدهد
http://www.vvolf.net/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif
برای دریافت ورودی از GET استفاده میکنیم
$image = $_GET["id"];
در نتیجه ورودی در متغیر image قرار میگیرد
این به تنهایی اصلا صحیح نیست، و میتواند مشکلات امنیتی از نظیر SQL Injection به وجود آورد پس باید ورودی را کنترول و محدود کنیم، ما در اینجا از تابع intval استفاده کردیم، شما میتوانید از filter در php یا توابع پاکسازی اعداد برای این کار استفاده کنید. (پس حتما در qeury پاکسازی را انجام دهید.)
به کد زیر دقت کنید و آن را در فایل image.php ذخیره کنید:
<?php
$id = intval($_GET["id"]);
if(isset($id))
{
$query = "SELECT * FROM tblImages WHERE imgID = '$id'";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
if(mysql_num_rows($result) == 1)
{
header("Content-Type: " . $row["imgType"]);
exit($row["imgImage"]);
}
else
{
$path = "images/notfound.jpg";
$image = imagecreatefromjpeg($path);
header("Content-Type: image/jpeg");
imagejpeg($image);
imagedestroy($image);
}
}
?>
شرط ما برای نمایش:
$id = intval($_GET["id"]);
if(isset($id))
isset: تعیین کننده ی قرارگرفتن مقدار در متغیر است؛ در صورتی که قرار گرفته باشد این مقدار True خواهد شد در غیر این صورت False میشود.
intval: مقدار عدد صحیح یک متغیر را دریافت میکند.
از mysql_num_rows برای موجود بودن درخواست استفاده کردیم
if(mysql_num_rows($result) == 1)
در این شرط ما گفتیم در صورتی که query گرفته شده برابر با 1 (موجود بودن رکورد) بود آنگاه ....
header("Content-Type: " . $row["imgType"]);
exit($row["imgImage"]);
تابع header برای ارسال هیدر در شناسایی نوع محتوا کاربرد دارد.
Content-Type: مشخص کردن در شناسایی نوع خروجی، این نوع از رکورد انتخاب شده از فیلد imgType مشخص میشود.
exit: نمایش خروجی و خاتمه ی اسکریپت
حالا اگر رکورد وجود نداشت چکار باید انجام دهیم؟
$path = "images/notfound.jpg";
$image = imagecreatefromjpeg($path);
header("Content-Type: image/jpeg");
imagejpeg($image);
imagedestroy($image);
در اینجا از GD برای نمایش تصویر Not Found استفاده میکنیم. تصویر notfound.jpg در پوشه images در صورتی که رکورد به هر دلیلی موجود نبود نمایش داده خواهد شد.
و در آخر برای نمایش تصاویر از کد HTML زیر استفاده خواهیم کرد.
<img src="image.php?id=2">
این تصویر نمایش رکورد 2 از بانک اطلاعاتی خواهد بود.
شاید بگویید که چرا سایز تصویر را در قسمت اول آموزش ذخیره کردیم؟، این فیلد را میتوانید برای مدیریت بهتر تصاویر داشته باشید یا اینکه بخواهید بخشی برای دانلود تصاویر از طریق بانک اطلاعاتی در سایت قرار دهید، با این حال میتوانید با قرار دادن "Content-Length" و "Content-Disposition: attachment" در تابع header بافراخوانی لینک، فایل را دریافت کنید.
منبع: http://www.Vvolf.net (http://www.vvolf.net/)
موفق