1 فایل پیوست  
	
	
		درخواست تغییر در این کد php برای آپلود فایل
	
	
		سلام دوستان 
کسی میدونه در فایل addshekayat.php چیکار باید بکنم تا قسمت آپلود علاوه بر عکس فرمت های zip , rar و... هم آپلود کنه ؟
و در فایل shekayat.php در قسمتی که تصویر رو نشون میده اگر تصویر بود نشون   بده و اگر فایل فشرده بود ی آیکن نشون بده با لینک دانلودش 
ممنونم میشم اگه کمک کنید برای پروژه دانشگاه می خوام .
	 
	
	
	
		پاسخ : درخواست تغییر در این کد php برای آپلود فایل
	
	
		البته اصلا شیوه آپلود شما به درستی بررسی کننده Mime/type فایل ها نیست و به سادگی میشود دورش زد و عملا امنیت بسیار پایینی داره این شیوه کنترل پسوند ها.
شما این خط را پیدا کنید:
	کد PHP:
	
       $uploadfile = $uploaddir . $id . '.gif'; 
 آن را حذف و جاش این کدها را بزارید:
	کد PHP:
	
      $image = getimagesize($_FILES['pic']['tmp_name']);
      $file_ext = $image['mime'];
      
      if ($file_ext='image/gif') {
         $uploadfile = $uploaddir . $id . '.gif';
      } 
      elseif ($file_ext='application/zip') 
      {
         $uploadfile = $uploaddir . $id . '.zip';
      } 
      elseif ($file_ext='application/x-rar-compressed') 
      {
         $uploadfile = $uploaddir . $id . '.rar';
      } 
      else 
      {
die('پسوند فایل ها صحیح نمی باشد!');
      } 
 با کد بالا ما اول پسوند فایل را کشف و برابر متغیر file_ext قرار دادیم. 
البته شیوه های دیگه ای هم هست برای کشف پسوند، اما این شیوه نه به نصب بود image_gd روی سرور نیاز دارد، و نه تابع مرورگر است (قابل دور زدن به راحتی نیست).
سپس با قیاس type فایل، پسوند مورد نظر را به انتهای نامش اضاف میکنیم.
من براتون 3 تا پسوند را گذاشتم، اگر خواستید می توانید دیگر پسوند ها را نیز مجاز کنید، کافیست شرط جدید برای اون پسوند به کد اضاف کنید، این هم Mime/type های پر کاربرد:
	کد PHP:
	
            'txt' => 'text/plain',
            'htm' => 'text/html',
            'html' => 'text/html',
            'php' => 'text/html',
            'css' => 'text/css',
            'js' => 'application/javascript',
            'json' => 'application/json',
            'xml' => 'application/xml',
            'swf' => 'application/x-shockwave-flash',
            'flv' => 'video/x-flv',
            // images
            'png' => 'image/png',
            'jpe' => 'image/jpeg',
            'jpeg' => 'image/jpeg',
            'jpg' => 'image/jpeg',
            'gif' => 'image/gif',
            'bmp' => 'image/bmp',
            'ico' => 'image/vnd.microsoft.icon',
            'tiff' => 'image/tiff',
            'tif' => 'image/tiff',
            'svg' => 'image/svg+xml',
            'svgz' => 'image/svg+xml',
            // archives
            'zip' => 'application/zip',
            'rar' => 'application/x-rar-compressed',
            'exe' => 'application/x-msdownload',
            'msi' => 'application/x-msdownload',
            'cab' => 'application/vnd.ms-cab-compressed',
            // audio/video
            'mp3' => 'audio/mpeg',
            'qt' => 'video/quicktime',
            'mov' => 'video/quicktime',
            // adobe
            'pdf' => 'application/pdf',
            'psd' => 'image/vnd.adobe.photoshop',
            'ai' => 'application/postscript',
            'eps' => 'application/postscript',
            'ps' => 'application/postscript',
            // ms office
            'doc' => 'application/msword',
            'rtf' => 'application/rtf',
            'xls' => 'application/vnd.ms-excel',
            'ppt' => 'application/vnd.ms-powerpoint',
            // open office
            'odt' => 'application/vnd.oasis.opendocument.text',
            'ods' => 'application/vnd.oasis.opendocument.spreadsheet', 
 البته اگر بیش از 5 مورد خواستید استفاده کنید بهتره از array یا توابع کامل تر بهره ببرید که بیخود اسکریپت سنگین نشود.
یک شرط هم آخرش هست که در صورتی که پسوند جزو موارد تعریف شده شما نبود پیغام خطا نمایش داده شود. می توانید به جای نمایش پیام مثلا کاربر را هدایت کنید به صفحه خطا یا ... .
- - - Updated - - -
امیدوارم کدها جواب دهد، چون اسکریپت کامل شما اینجا نیست، امکان تست نبود.
چون پروژه دانشگاه هست، قسمت دوم درخواست را گذاشتم خودتان با نگاه به کدهای قسمت اول کشف کنید.
	 
	
	
	
		پاسخ : درخواست تغییر در این کد php برای آپلود فایل
	
	
		ممنونم ازتون خیلی لطف کردید 
امیدوارم بتونم جبران کنم
	 
	
	
		1 فایل پیوست  
	
	
		پاسخ : درخواست تغییر در این کد php برای آپلود فایل
	
	
		دوست عزیز 
هنوز هم فقط فایل های gif  آپلود میشه 
ولی فایل های zip  و rar  آپلود نمیشه 
اسکریپت کامل رو میزارم 
ممنون
	 
	
	
	
		پاسخ : درخواست تغییر در این کد php برای آپلود فایل
	
	
		من تعجب هستم، سری قبل خیلی پر اشتباه کد را اینجا گذاشتم برات. اصلا نیاز نیست به اون شکل کار بشود. یک راه حل ساده تر هم بای شناسایی type فایل ها به کار بردیم که راحت مستقیم شما پسوندش را بزنید. البته ساده تر از شیوه بالا قابل دور زدن هست اما خوب برای پروژه شما مشکلی نیست ;)
به جای اون کد که بالا گفتم، کد زیر را جانشین کن.
	کد PHP:
	
      $path = $_FILES['pic']['name'];
      $file_ext = pathinfo($path, PATHINFO_EXTENSION);
      
      if ($file_ext=='gif') {
         $uploadfile = $uploaddir . $id . '.gif';
      }
      elseif ($file_ext=='zip')
      {
         $uploadfile = $uploaddir . $id . '.zip';
      }
      elseif ($file_ext=='rar')
      {
         $uploadfile = $uploaddir . $id . '.rar';
      }
      else
      {
       die ("<br><br>پسوند مجاز نیست<br><br>$file_ext");
      } 
 تستش کردم جواب میده کامل.
فقط در صفحه نمایش شکایت ها، دیگه باید همین شروط را اعمال کنی تا پسوند صحیح فایل کشف بشه و بعد از کشف پسوند فایل شرط بنویسی که اگر zip بود مثلا آیکون خاص خودش نمایش داده بشه یا مثلا اگر عکس بود خود عکس نمایش داده بشه و ....
	 
	
	
	
		پاسخ : درخواست تغییر در این کد php برای آپلود فایل
	
	
		خیلی ممنونم دوست من 
خیلی لطف کردید
	 
	
	
	
		پاسخ : درخواست تغییر در این کد php برای آپلود فایل
	
	
		در پیام خصوصی فرموده بودین مشکل دارید هنوز، این محتویات فایل  هست، که من کاملا تست کردم آپلود هم می کند:
	کد PHP:
	
<?php
    session_start();
    require("dbConnect.php"); 
?>
<?php
  if (isset($_POST['action']))
  {
    $action = addslashes($_POST['action']);
    $subject = addslashes($_POST['subject']);
    $person = addslashes($_POST['person']);
    $text = addslashes($_POST['text']);
    if ($action == 'new')
    {
      $sql = "INSERT INTO `shekayat`(`subject`,`text`,`person`)"
             ."VALUES('$subject','$text','$person')";
      mysql_query($sql);
      $id = mysql_insert_id();
      $uploaddir = 'pic/';
      
      $path = $_FILES['pic']['name'];
      $file_ext = pathinfo($path, PATHINFO_EXTENSION);
      
      if ($file_ext=='gif') {
         $uploadfile = $uploaddir . $id . '.gif';
      } 
      elseif ($file_ext=='zip') 
      {
         $uploadfile = $uploaddir . $id . '.zip';
      } 
      elseif ($file_ext=='rar') 
      {
         $uploadfile = $uploaddir . $id . '.rar';
      } 
      else 
      {
       die ("<br><br>پسوند مجاز نیست<br><br>$file_ext");
      } 
      
      !move_uploaded_file($_FILES['pic']['tmp_name'], $uploadfile);
      header('Location: shekayat.php');
    }
  }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <link rel="stylesheet" type="text/css" href="style.css" />
    <meta  http-equiv="content-type" content="text/html;  charset=utf-8" />
    <title>سايت تاکسیرانی</title>
    <style type="text/css">
.auto-style1 {
    font-family: Tahoma;
}
</style>
</head>
<body style="background-image: url('pic/Abstract%20Green%20Wallpaper.jpg')">
    <div id="main">
        <div id="banner">
            <img alt="" height="132" src="pic/banner.jpg" width="751"></div>
        <?php
          require("menu.php");
        ?>
        <div id="rbody">
          <form action="#" method="post" enctype="multipart/form-data">
            <input type="hidden" name="action" value="new" />
            <table>
                <tr>
                    <td>موضوع شکايت/تشویق</td>
                    <td>
                    <input name="subject" type="text" value="" class="auto-style1" /> </td>
                </tr>
                <tr>
                    <td>نام شخص</td>
                    <td>
                    <input name="person" type="text" value="" class="auto-style1" /> </td>
                </tr>
                <tr>
                    <td>متن</td>
                    <td><textarea name="text" class="auto-style1" ></textarea> </td>
                </tr>
                <tr>
                    <td>تصوير</td>
                    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
                    <td><input name="pic" type="file" class="auto-style1"/> </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <input type="submit" value="ثبت" class="auto-style1" />
                        <input type="reset" value="پاک" class="auto-style1" />
                    </td>
                </tr>
            </table>
          </form>
        </div>
    </div>
</body>
</html>
  
	 
	
	
	
		پاسخ : درخواست تغییر در این کد php برای آپلود فایل
	
	
		ممنون از پاسخگوییتون 
ولی هنوزم آپلود نمیکنه 
به ظاهر در خود برنامه آپلود میشه و داخل صفحه نشون داده میشه ولی هیچ فایلی به پوشه مورد نظر که همون pic باشه منتقل نمیشه .
	 
	
	
	
		پاسخ : درخواست تغییر در این کد php برای آپلود فایل
	
	
		دوستان کسی نمی دونه مشکل کجاست ؟ 
تا عصر باید تحویل بدم پروژه رو
	 
	
	
	
		پاسخ : درخواست تغییر در این کد php برای آپلود فایل
	
	
		فایل منتقل میشه دوست عزیز، من تست کردم.
تنها مسئله این است که شما دارین رو php نسخه چند تستش می کنید؟
من با 5.3.5 تست کردم بدون مشکل، هم فایل آپلود شده و به مسیر صحیح هدایت می شود و هم پسوند فایل درست تفکیک می شود. شما با این نسخه تست کنید.
	 
	
	
	
		پاسخ : درخواست تغییر در این کد php برای آپلود فایل
	
	
		برای wamp نسخه php هم 5.3.8 نمی دونم چرا نمیشه 
امروز باید تحویل می دادم تا فردا صبح وقت گرفتم ازش 
ممنون که وقت میذارید  و  جواب میدید
	 
	
	
	
		پاسخ : درخواست تغییر در این کد php برای آپلود فایل
	
	
		روی هاست تست کردم کار میکنه ممنون دوست عزیز