مشکل در ذخیری آدرس عکس در بانک

شروع موضوع توسط msafvati ‏21 مارس 2008 در انجمن برنامه‌نویسی با PHP

  1. msafvati

    msafvati New Member

    ارسال‌ها:
    17
    تشکر شده:
    0
    امتیاز دستاورد:
    1
    با سلام خدمت دوستان و تبریک سال نو
    من ميخوام مسير عکس رو با توجه به کد زير در ديتابيس قرار بدم اما هميشه يک سطر خالي در ديتابيس رد ميشه و چيزي مبني بر مشخصات عکس مثل سايز،نام و ... نيست.
    از دوستان ميخوام راهنماييم کنند يا اگه راه بهتري براي قرار دادن مسير عکس در پايگاه داده ميشناسند به بنده کمک کنند.
    با تشکر

    کد (Text):

    <?php
     if (isset ($_GET['upload'] ))
     {
     $name = $_FILES['picture']['name'];
     $tmp_name= $_FILES['picture']['tmp_name'];
     $type = $_FILES['picture']['type'];
     $size= $_FILES['picture']['size'];
     
     list($width,$height,$typeb,$attr)= getimagesize($tmp_name);
     if ($width>600 || $height>500)
     {
      echo $name."dimensions exceed the 600*500 Pixel Limited.";
      die();
     }
    # if (!(
    # $type=='image/jpeg' ||
    # $type=='image/png' ||
    # $type=='image/gif'
    # ))
    # {
    # echo $type."is not an acceptable Format.";
    # }
     
     if ($size>'350000') {
     echo $name."is over 350KB. please make it smaller";
     die();
         }
         }
         
         if (! get_magic_quotes_gpc()){
         $name= addslashes($name);
         
         $extract = fopen($tmp_name,'r');
         $content = fread ($extract,$size);
         $content = addslashes($content);
         fclose ($extract);
         }
         
          $con=odbc_connect("Test","","");
         $addfile = " insert into tblTest (name,size,type,content) ". " values ('$name','$size','$type','$content')";
          $result = odbc_do ($con,$addfile);
          odbc_close($con);
         
    ?>
     
     
    نوشته شده توسط msafvati در ‏21 مارس 2008
  2. irdavidnet

    irdavidnet Banned

    ارسال‌ها:
    424
    تشکر شده:
    100
    امتیاز دستاورد:
    16
    نه این برنامت زیاد خوب نیست .
    باید از این کد استفاده کنی :
    هم ساده ، هم راحتتر .
    البته توی این برنامه من ، این چیزها توی بانک ذخیره میشه که خودت می تونی اصلاح کنی :
    1- نام عکس
    2- آدرس آپلود شده
    3- تایپ
    4- سایز
    »»»
    PHP:
    $readdir = "../../uploads";
    $allow = "jpg,jpeg,gif,bmp,pdf,png,txt,doc,rtf,zip,tar.gz,tiff,css,mpeg,mp3,midi,js,txt";

    if (isset($_POST['SUBMIT'])) {
    ////// check for allow file
    if ($_FILES['file']['type']=="image/jpeg" OR $_FILES['file']['type']=="image/jpg" OR $_FILES['file']['type']=="image/jpe" OR $_FILES['file']['type']=="image/pjpeg" OR $_FILES['file']['type']=="image/pjpg" OR $_FILES['file']['type']=="image/x-jpeg" OR $_FILES['file']['type']=="image/x-jpg" OR
    $_FILES['file']['type']=="image/gif" OR $_FILES['file']['type']=="image/x-gif" OR $_FILES['file']['type']=="image/png" OR $_FILES['file']['type']=="image/x-png" OR $_FILES['file']['type']=="image/tif" OR $_FILES['file']['type']=="image/tiff" Or $_FILES['file']['type']=="image/bmp" Or $_FILES['file']['type']=="image/x-bmp"
    Or $_FILES['file']['type']=="text/css" OR  $_FILES['file']['type']=="video/mpeg" Or $_FILES['file']['type']=="video/x-mpeg" OR $_FILES['file']['type']=="audio/mpeg" Or $_FILES['file']['type']=="audio/x-mpeg" OR $_FILES['file']['type']=="audio/midi" OR $_FILES['file']['type']=="audio/mid" OR $_FILES['file']['type']=="text/plain" OR $_FILES['file']['type']=="application/zip" OR $_FILES['file']['type']=="application/x-zip" OR $_FILES['file']['type']=="application/x-zip-compressed" OR $_FILES['file']['type']=="application/pdf" OR $_FILES['file']['type']=="application/msword" OR $_FILES['file']['type']=="application/x-javascript" OR $_FILES['file']['type']=="application/x-tar"){
     
    if (eregi(".php",$_FILES['file']['name']) OR eregi(".php3",$_FILES['file']['name']) OR eregi(".php4",$_FILES['file']['name']) OR eregi(".asp",$_FILES['file']['name'])
    OR eregi(".html",$_FILES['file']['name']) OR eregi(".htm",$_FILES['file']['name']) OR eregi(".php5",$_FILES['file']['name']) OR eregi(".aspx",$_FILES['file']['name'])
    ){
    echo "فرمت فايل غير قابل قبول است";
    }else {
    if (file_exists($readdir.'/'.$_FILES['file']['name'])){
    echo "فايل مورد نظر در دايرکتوري وجود دارد";}
    else {
    if ($_FILES['file']['name']=='index.htm' OR $_FILES['file']['name']=='index.html' OR $_FILES['file']['name']=='defualt.html'  OR $_FILES['file']['name']=='defualt.html'  OR $_FILES['file']['name']=='defualt.asp'  OR $_FILES['file']['name']=='defualt.aspx'
    OR $_FILES['file']['name']=='index.php' OR $_FILES['file']['name']=='index.php3' OR $_FILES['file']['name']=='index.php4' OR $_FILES['file']['name']=='index.php5' OR $_FILES['file']['name']=='index.txt'
    ){
    echo "نام وارد شده معتبر نيست";}
    else {
    if ($_FILES['file'] != "") {
       $dir ="../../uploads/";
       if (copy($_FILES['file']['tmp_name'], $dir.$_FILES['file']['name'])){
       $query=mysql_query("INSERT INTO `upload` (name,size,type,dir) value ('$_FILES[file][name]','".filesize($_FILES['file']['tmp_name'])."','$_FILES[file][type]','$readdir'");
       if ($query){
       echo "فایل مورد نظر با موفقیت ارسال شد";
       }} else {
       exit("متاسفانه مشکلی در ارسال فایل مورد نظر وجود دارد".mysql_error());
       }
      }
    }}}}else {echo "فرمت فايل غير قابل قبول مي باشد";}}
    دکمه تشکر رو بزنی ها
     
    نوشته شده توسط irdavidnet در ‏22 مارس 2008
  3. hba

    hba Active Member

    ارسال‌ها:
    742
    تشکر شده:
    84
    امتیاز دستاورد:
    28
    اين ميگه توي ديتابيس تو توي فولدر upload ميريزي ميگي تازه تشكر هم بزن؟؟؟؟؟؟

    قبلا اموزش ريختن فايل تو ديتابيس رو گذاشته بودم
     
    نوشته شده توسط hba در ‏22 مارس 2008
  4. jhoseini

    jhoseini Member

    ارسال‌ها:
    783
    تشکر شده:
    286
    امتیاز دستاورد:
    16
    من اسکریپت آپلود فایل تو دیتابیس رو گزاشتم، اما پست رو خوندم، دیدم ایشون میخاد آدرس فایل رو بریزه تو دیتابیس، بره همین پستی که زدم رو حذف کردم، حامد جان فکر میکنم جواب irdavidnet کفابت میکنه (گرچه نگاشم نکردم :d)
     
    نوشته شده توسط jhoseini در ‏23 مارس 2008
  5. irdavidnet

    irdavidnet Banned

    ارسال‌ها:
    424
    تشکر شده:
    100
    امتیاز دستاورد:
    16
    بابا چرا بی خودی میگی من دقیقاً اون مدلی که می خواست رو گذاشتم دیگه .
    آدرس رو می ریزه تو بانک .
     
    نوشته شده توسط irdavidnet در ‏23 مارس 2008
  6. hba

    hba Active Member

    ارسال‌ها:
    742
    تشکر شده:
    84
    امتیاز دستاورد:
    28
    ولي تيكه كد خودش كه اول اول گذاشته معلومه اين رو نمي خواهد
     
    نوشته شده توسط hba در ‏23 مارس 2008
  7. ali-k

    ali-k Member

    ارسال‌ها:
    50
    تشکر شده:
    8
    امتیاز دستاورد:
    6
    مشکل کد شما در این قسمت هست:
    PHP:

    if (isset ($_GET['upload'] ))
     {
     
    اینجا مشکل به این صورت هست اول اینکه چرا متغییر از نوع _GET ؟ در زمان ارسال فایل همیشه متد POST هست و متغییری با GET ارسال نمیشه :) پس اگر میخواید چک کنید isset را از $_POST استفاده کنید .

    اینجا چون شما شرط گذاشتی بر روی GET و این شرط همیشه نادرست هست پس هیچ اطلاعاتی از اسم و آدرس بوجود نمیاد و نهایتا یک رکورد خالی توی دیتابیس ریخته میشه :)

    برای تصحیح اگر فیلدی توی فرم هست به اسم upload پس توی شرط هم از $_POST استفاده کن :)



    پ.ن: راه وجود متغییر GET در زمان ارسال با متد POST قرار دادن متغییر در Action فرم هست :) که شرط شما دراین حالت میتوانه درست کار کنه ولی فکر نمیکنم شما همچین کاری را کرده باشید :)
     
    نوشته شده توسط ali-k در ‏23 مارس 2008
  8. dreamer

    dreamer New Member

    ارسال‌ها:
    2
    تشکر شده:
    0
    امتیاز دستاورد:
    1
    با سلام
    برای گرفتن فایل بهتر از FILES_$ استفاده کنی نه POST_$ یا GET_$ ولی روش ارسال همان POST باشه
    قبل از خواندن محتوا باید اون رو کپی کنی توی یه شاخه دیگه temp_FILE موقتی است و فایل از بین میره
    برای کپی از دستور move_uploaded_file استفاده کن
    برای خواندن محتوای فایل از دستور file_get_contents استفاده کن
    خیلی ساده است امتحان کن
     
    نوشته شده توسط dreamer در ‏28 مارس 2008

به اشتراک بگذارید