ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی “ ورود به حساب” کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمیشود، اینجا را کلیک کنید.





نمایش نتایج: از 1 به 9 از 9
Like Tree1Likes
  • 1 Post By adminmsp

موضوع: اموزش ذخیره تصاویر در MySQL و نمایش آنها با PHP

  1. #1
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,586
    759
    406

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

    سلام

    در این آموزش چگونگی ذخیره تصاویر دودویی (باینری) در بانک اطلاعاتی و نمایش آنها در PHP را خواهید آموخت

    در این قسمت فقط ذخیره تصاویر را می آموزید، در آینده قسمت دوم آن که نمایش تصاویر است را خواهم گفت

    [B]چرا تصاویر را در بانک اطلاعاتی ذخیره کنیم؟[/B]
    ممکن است شما بخواهید در سایتتان بخشی برای ذخیره تصویر کاربر قرار دهید، یا فروشگاهی ایجاد میکنید که تعدادی فروشگاه در آن گسترش یافته باشند و بخواهید برای هر کدام یک لوگو قرار دهید یا تصاویر محصولات خود را در بانک اطلاعاتی داشته باشید.

    1. شما میتوانید با ذخیره در بانک اطلاعاتی امنیت بیشتری برای تصاویر و فایل های خود داشته باشید.
    2. متن نیز بر روی تصویرتان قرار دهید و آنها را به سادگی مدیریت کنید.
    3. فایل ها برای رکورد کاربر ذخیره خواهند شد، در نتیجه ارتباط مستقیم دارند و دسته بندی آسان انجام میشود

    [B]شما با تهیه یک نسخه پشتیبانی از بانک اطلاعاتی میتوانید تمام تصاویر را همراه داشته باشید[/B]

    [B]برای شرع کار ابتدا باید یک بانک اطلاعاتی ایجاد کنید[/B]

    نحوه ی اتصال به MySQL را میتوانید از اینجا مشاهده کنید

    بعد از اتصال به بانک اطلاعاتی نیاز به ایجاد جدول برای ذخیره تصاویر داریم

    کد PHP:
    CREATE TABLE `tblImages`
    (
    `
    imgIDint(11unsigned NOT NULL auto_increment,
    `
    imgTypevarchar(32NOT NULL default '',
    `
    imgImageBLOB NOT NULL,
    `
    imgSizevarchar(32NOT NULL default '',
    `
    imgDatedatetime NOT NULL default '0000-00-00 00:00:00',
    PRIMARY KEY (`imgID`)
    TYPE=MyISAM
    [B]معرفی:[/B]

    [B]int [/B]از نوع عددی

    [B]auto_increment [/B]ایجاد اتوماتیک ID

    [B]varchar [/B]از نوع کاراکتر

    [B]BLOB [/B]شیء بزرگ دودویی است که در سریعترین زمان ذخیره سازی میکند و خروجی میگیرد.

    [B]از انواع BLOB میتوان به

    [/B]
    کد PHP:
    BLOB
    TINYBLOB
    MEDIUMBLOB
    LONGBLOB 
    [B]اشاره کرد.[/B]

    [B]datetime [/B]شیء برای قرار دادن تاریخ و ساعت ذخیره سازی


    این جدول برای قرارگیری تصاویر در بانک اطلاعاتی ایجاد شده است


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


    در اینجا نیاز به یک فرم html برای ارسال تصویر داریم

    کد PHP:
    <form method="post" action="upload.php" enctype="multipart/form-data">
    <
    input name="image" type="file" />
    <
    input type="submit" value="submit" />
    </
    form
    [B]با افزودن enctype و قراردادن multipart/form-data مرورگر قادر به ارسال اطلاعات دودویی خواهد بود[/B]


    بعد از ایجاد فرم نیاز به افزودن داده ها در بانک اطلاعاتی داریم


    کد زیر را در فایل upload.php قرار دهید سپس اتصال با بانک اطلاعاتی را ایجاد کنید.
    کد PHP:
    <?php

    $iSize 
    10000;

    $iWidth 100;

    $iHeight 100;

    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($fpfilesize($tmpName));

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

     
    fclose($fp);

     
    $date date("Y-m-d H:i:s");

     
    $query "INSERT INTO tblImages (imgType, imgImage, imgSize, imgDate) VALUES ('$imgType', '$imageName', '$imgSize', '$date')";
     
    mysql_query($query);

     echo 
    "Your file has been uploaded.";
    }

    ?>
    متغییر های تعریف شده در اینجا:

    [B]iSize[/B]: حجم تصویر
    [B]iWidth[/B]: عرض تصویر
    [B]iHeight[/B]: ارتفاع تصویر


    شرط ما برای ذخیره سازی این است که کاربر فایل را انتخاب کرده و سایز آن بزرگتر از صفر است
    کد PHP:
    if((isset($_FILES["image"])) && ($_FILES["image"]["size"] > 0)) 
    متغییر های تعریف شده فایل:

    [B]imgSize[/B]: دریافت سایز تصویر ارسال شده
    [B]imgType[/B]: نوع تصویر ارسال شده
    [B]tmpName[/B]: ذخیره موقت تصویر در tmp

    برای چک کردن صحت حجم تصویر از شرط زیر استفاده کردیم

    کد PHP:
    if($imgSize $iSize)
    exit(
    "Error: Large file size."); 
    تابع getimagesize برای دریافت ابعاد تصویر است، اگر false باشد یعنی فایل ارسالی تصویر نیست

    برای این کار از شرط زیر استفاده کردیم

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


    شرط زیر برای چک کردن عرض و ارتفاع است



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

    تابع [B]fopen [/B]برای خواندن فایل یا URL استفاده میشود، آدرس را از tmp ها میخواند

    تابع [B]fread [/B]برای خواندن امن فایل های دودویی یا باینری به کار میرود

    تابع [B]filesize [/B]برای دریافت سایز فایل استفاده میشود


    تابع[B] get_magic_quotes_gpc[/B] در این شرط گفته شده اگر غیر فعال بود از [B]addslashes [/B]استفاده کن.


    [B]get_magic_quotes_gpc[/B] تمامی [B]qoute [/B]ها را با متغیر های ارسالی با اضافه کردن slash فیلتر میکنه


    تایع [B]addslashes [/B]همونطور که از اسمش مشخص است برای اضافه کردن [B]slash [/B]به کار میرود تا مشکلی احتمالی برای افزودن رکورد پیش نیاید


    تابع [B]fclose [/B]برای بستن فایل باز شده استفاده میشود.
    aloneskipper likes this.
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  2. 2
  3. #2
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,586
    759
    406
    همانطور که گفته شد این روش برای ذخیره تصاویر خاص مانند ذخیره: تصویر کاربر، لوگو و تصاویر کم حجم بیشتر استفاده خواهد شد.

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



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

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

    [B]کد:
    [/B]


    کد PHP:
     image.php?id=



    به این صورت هر شماره ورودی در متد [B]id [/B]تصویر آن رکورد را نمایش میدهد

    [B]برای دریافت ورودی از GET استفاده میکنیم[/B]

    [B]کد PHP:
    [/B]


    کد PHP:
     $image $_GET["id"]; 



    [B]در نتیجه ورودی در متغیر [B]image [/B]قرار میگیرد[/B]

    این به تنهایی اصلا صحیح نیست، و میتواند مشکلات امنیتی از نظیر [B]SQL Injection[/B] به وجود آورد پس باید ورودی را کنترول و محدود کنیم، ما در اینجا از تابع[B]intval [/B]استفاده کردیم، شما میتوانید از [B]fliter [/B]در [B]php [/B]یا توابع پاکسازی اعداد برای این کار استفاده کنید. [B](پس حتما در qeury پاکسازی را انجام دهید.)[/B]

    [B]به کد زیر دقت کنید و آن را در فایل image.php ذخیره کنید:[/B]

    [B]کد PHP:
    [/B]


    کد 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 "http://forum.mspsoft.com/images/notfound.jpg";

     
    $image imagecreatefromjpeg($path);

     
    header("Content-Type: image/jpeg");

     
    imagejpeg($image);

     
    imagedestroy($image);
     }
    }

    ?>



    [B]شرط ما برای نمایش:[/B]
    [B]کد PHP:
    [/B]


    کد PHP:
     $id intval($_GET["id"]);
    if(isset(
    $id)) 



    [B]isset[/B]: تعیین کننده ی قرارگرفتن مقدار در متغیر است؛ در صورتی که قرار گرفته باشد این مقدار [B]True [/B]خواهد شد در غیر این صورت [B]False [/B]میشود.

    [B]intval[/B]: مقدار عدد صحیح یک متغیر را دریافت میکند.


    [B]از mysql_num_rows برای موجود بودن درخواست استفاده کردیم[/B]

    [B]کد PHP:
    [/B]


    کد PHP:
     if(mysql_num_rows($result) == 1



    در این شرط ما گفتیم در صورتی که query گرفته شده برابر با 1 (موجود بودن رکورد) بود آنگاه ....

    [B]کد PHP:
    [/B]


    کد PHP:
     header("Content-Type: " $row["imgType"]);

     exit(
    $row["imgImage"]); 



    تابع [B]header [/B]برای ارسال هیدر در شناسایی نوع محتوا کاربرد دارد.

    [B]Content-Type[/B]: مشخص کردن در شناسایی نوع خروجی، این نوع از رکورد انتخاب شده از فیلد [B]imgType [/B]مشخص میشود.

    [B]exit[/B]: نمایش خروجی و خاتمه ی اسکریپت

    [B]حالا اگر رکورد وجود نداشت چکار باید انجام دهیم؟[/B]
    [B]کد PHP:
    [/B]


    کد PHP:
     $path "http://forum.mspsoft.com/images/notfound.jpg";

     
    $image imagecreatefromjpeg($path);

     
    header("Content-Type: image/jpeg");

     
    imagejpeg($image);

     
    imagedestroy($image); 


    در اینجا از [B]GD [/B]برای نمایش تصویر [B]Not Found[/B] استفاده میکنیم. تصویر [B]notfound.jpg[/B] در پوشه [B]images [/B]در صورتی که رکورد به هر دلیلی موجود نبود نمایش داده خواهد شد.

    [B]و در آخر برای نمایش تصاویر از کد HTML زیر استفاده خواهیم کرد.[/B]


    [B]کد:
    [/B]


    کد PHP:
     <img src="image.php?id=2"





    این تصویر نمایش [B]رکورد 2[/B] از بانک اطلاعاتی خواهد بود.

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


    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  4. 3
  5. #3
    kalantari
    كاربر عادي
    تاریخ عضویت
    2013 Jun
    نوشته ها
    1
    0
    0
    اگر تعداد تصاویر بیشتر از یکی باشه چطور با این روش نمایش بدیم؟
  6. #4
    p30
    p30
    كاربر عادي
    تاریخ عضویت
    2013 Aug
    نوشته ها
    1
    0
    0
    سلام مرسی از پست ها تون من همین کارو انجام دادم هیچ پیغام خططا نمیده ولی عکس تو دیتابیس ذخیره نمیشه
    وقتی عکس انخاب میکنی و دکمه سابمیتو میزنی بلا مینویسه Your file has been uploaded.

    و عکس ذخیره نمیشه لطفا کمکم کنید .
  7. #5
    yasharsubtitle
    كاربر عادي
    تاریخ عضویت
    2014 Dec
    نوشته ها
    1
    0
    0
    سلام
    ابتدا یک دیتابیس بنام test ایجاد کن. سپس یک جدول با مشخصات داده شده و با نام داده شده بساز. بعد در ابتدای فایل upload و بعداز تگ <?php کوئری زیر را اضافه کن.

    mysql_connect("localhost","root","");
    mysql_select_db("test");
  8. #6
    mahdi-nsn
    كاربر عادي
    تاریخ عضویت
    2015 May
    نوشته ها
    1
    0
    0
    چرا ذخیره نمیشه مینویسه ذخیره شد اما تو دیتا بیس چیزی نیست کوئری هم ساختم به دیتا بی هم وصل شدم اما هیچ
  9. #7
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,586
    759
    406
    نقل قول نوشته اصلی توسط mahdi-nsn [برای نمایش لینک باید عضو شوید. ]
    چرا ذخیره نمیشه مینویسه ذخیره شد اما تو دیتا بیس چیزی نیست کوئری هم ساختم به دیتا بی هم وصل شدم اما هیچ
    آدرس باید ذخیره بشه در دیتابی شما مسیری که فایلو میدی ببینید فایل قرار داره یا خیر
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  10. #8
    nazila2611
    كاربر عادي
    تاریخ عضویت
    2016 Jan
    نوشته ها
    2
    0
    0
    مرسی مدیر جان خیلی کمکم کرد این آموزشت عالی بود
    [برای نمایش لینک باید عضو شوید. ]
    [برای نمایش لینک باید عضو شوید. ]
    [برای نمایش لینک باید عضو شوید. ]
  11. #9
    Msnm
    كاربر عادي
    تاریخ عضویت
    2016 Jun
    نوشته ها
    1
    2
    0

    Exclamation سوال

    چطوری همراه عکس اطلاعات دیگه مانند نام ،نام خانوادگی و... رو ذخیره کنیم در یک جدول؟
    من میخوام آدرس عکس رو ذخیره کنم تو دیتابیس ! چطوری انجامش بدم کد میخوام
    ممنون میشم راهنمایم کنید
    ویرایش توسط Msnm : 2016-06-08 در ساعت 11:25 AM
نمایش نتایج: از 1 به 9 از 9

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ: 2
    آخرين نوشته: 2013-03-11, 11:58 AM
  2. ایجاد یک گالری تصاویر در php
    توسط MspSoft در انجمن PHP
    پاسخ: 0
    آخرين نوشته: 2012-02-15, 01:32 PM
  3. ذخیره تصاویر در SQL Server
    توسط MspSoft در انجمن SQL Server
    پاسخ: 0
    آخرين نوشته: 2012-01-30, 12:08 AM
  4. آموزش سورسی که حجم تصاویر را کاهش می دهد
    توسط vahid4251 در انجمن برنامه نویسی در 6 VB
    پاسخ: 0
    آخرين نوشته: 2012-01-29, 09:58 AM
  5. تصاویری از شبکه اجتماعی جدید مایکروسافت
    توسط mspsoft در انجمن تازه‌های دنیای کامپیوتر و فناوری
    پاسخ: 0
    آخرين نوشته: 2011-11-25, 02:59 PM

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

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

Content Relevant URLs by vBSEO 3.6.0 RC 2