نمایش نتایج 1 تا 5 از 5

نام تاپیک: ذخیره تصاویر در MySQL و نمایش آنها با PHP قسمت دوم

  1. #1

    ذخیره تصاویر در MySQL و نمایش آنها با PHP قسمت دوم

    این آموزش ادامه قسمت اول روش ذخیره تصاویر در بانک اطلاعاتی است

    همانطور که گفته شد این روش برای ذخیره تصاویر خاص مانند ذخیره: تصویر کاربر، لوگو و تصاویر کم حجم بیشتر استفاده خواهد شد.

    حتما طبق روش قبل حجم تصویر و سایز آن را محدود کنید.

    خوب اول از همه باید ارتباط با پایگاه داده را انجام دهیم؛ که این در آموزشهای قبل مختصر توضیح داده شد. برای اطلاعات بیشتر کلیک کنید.

    همانطور که به یاد دارید در قسمت اول این آموزش، در هنگام طراحی جدول فیلدی برای نوع فایل به اسم imgType معرفی کردیم، این فیلد برای نمایش یا دانلود فایل نقش بسیار مهمی دارد.

    من نمایش فایل را با استفاده از فایل image.php انجام خواهم داد، برای مثال اگر بخوایم رکورد 2 را نمایش دهیم به این صورت عمل میکنیم



    image.php?id=2

    به این صورت هر شماره ورودی در متد id تصویر آن رکورد را نمایش میدهد


    برای دریافت ورودی از 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 زیر استفاده خواهیم کرد.
    کد HTML:
    <img src="image.php?id=2">
    این تصویر نمایش رکورد 2 از بانک اطلاعاتی خواهد بود.

    شاید بگویید که چرا سایز تصویر را در قسمت اول آموزش ذخیره کردیم؟، این فیلد را میتوانید برای مدیریت بهتر تصاویر داشته باشید یا اینکه بخواهید بخشی برای دانلود تصاویر از طریق بانک اطلاعاتی در سایت قرار دهید، با این حال میتوانید با قرار دادن "Content-Length" و "Content-Disposition: attachment" در تابع header بافراخوانی لینک، فایل را دریافت کنید.

    منبع: http://www.Vvolf.net

    موفق

  2. #2

    نقل قول: ذخیره تصاویر در MySQL و نمایش آنها با PHP قسمت دوم

    سلام من اسم حدول و تغییر دادم و سایز هم محدودیت و تغییر دادم

    این کد :

    <?php

    $iSize = 10000;

    $iWidth = 200;

    $iHeight = 200;

    if((isset($_FILES["image"])) && ($_FILES["image"]["size"] > 0))
    {
    $imgSize = $_FILES["image"]["size"];
    $imgType = $_FILES["image"]["type"];
    $tmpName = $_FILES["image"]["tmp_name"];

    if($imgSize > $iSize)
    exit("Error: Large file size.");

    $getImgSize = getimagesize($tmpName);

    if(!$getImgSize)
    exit("Error: Invalid Image File.");

    list($width, $height) = $getImgSize;

    if(($width > $iWidth) || ($height > $iHeight))
    exit("Maximum width and height exceeded. Please upload images below 100x100px size");

    $fp = fopen($tmpName, 'r');
    $imageName = fread($fp, filesize($tmpName));

    if(!get_magic_quotes_gpc())
    $imageName = addslashes($imageName);

    fclose($fp);

    $date = date("Y-m-d H:i:s");
    $link = mysql_connect("localhost","csa_admin","admin");
    if(!$link)
    {
    die('not connect'.mysql_error());
    }
    if(!mysql_select_db('admin_csauserinfo',$link))
    echo "db selector error";
    $q = "insert into img (imgType,imgImage,imgSize,imgDate) values ('$imgType','$imageName','$imgSize','$date')";
    $result = mysql_query($q);
    if($result)
    echo "Your file has been uploaded.";

    }

    ?>


    اما تو بانک ذخیره نمیکنه انواع insert و تست مردم اما نمیدونم کجاش مشکله
    و مرسی بابت آموزش
    سوال دیگه اینکه
    من این سه هدر و دادم تو نمایش :

    header("Content-Type: " . $row["imgType"]);
    header("Content-Length: " . $row["imgSize"]);
    header("Content-Disposition: attachment");



    اما موقع ذخیره با پسوند php ذخیره میکنه چیکار باید کرد ؟


  3. #3

    نقل قول: ذخیره تصاویر در MySQL و نمایش آنها با PHP قسمت دوم

    راستی من میخوام تصویر و تو تگ img نشون بدم میشه بگین چجوریه ؟

  4. #4

    نقل قول: ذخیره تصاویر در MySQL و نمایش آنها با PHP قسمت دوم

    header("Content-Disposition: attachment");  
    به این شکل بنویس

    header("Content-Disposition: attachment;filename=".$row['imgImage']);

    راستی من میخوام تصویر و تو تگ img نشون بدم میشه بگین چجوریه ؟

    <img src=file.php>
    آخرین ویرایش به وسیله funpatogh : جمعه 16 مهر 1389 در 19:33 عصر

  5. #5

    نقل قول: ذخیره تصاویر در MySQL و نمایش آنها با PHP قسمت دوم

    سلام
    منم تمام کد ها رو مل همینجا نوشته داخل بانک اطلاعاتیم ذخیره میشه اما نمایش نمیده عکس رو فقط همین صفحه میاد خواهش میکنم بگین چیکار کنم
    aks.jpg

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •