النتائج 1 إلى 7 من 7

الموضوع: [سؤال] تنزيل الملفات دون الكشف عن الروابط المباشرة

  1. #1
    عضو سوبر نشيط
    تاريخ التسجيل
    Dec 2004
    المشاركات
    884

    [سؤال] تنزيل الملفات دون الكشف عن الروابط المباشرة



    السلام عليكم ورحمة الله وبركاته

    اليوم هو الثاني على التوالي وأنا أحاول إيجاد طريقة صحيحة لتنزيل ملف دون اكتشاف مساره الأصلي
    وقد قمت باستخدام الشفرة الآتية:
    كود PHP:
      header("Pragma: public");
           
    header("Expires: 0");
           
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
           
    header("Cache-Control: public");
           
    header("Content-Description: File Transfer");

           
    header('(anti-spam-content-type:) '.$files[mimetype]);


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

           
    header("Content-Transfer-Encoding: binary");
           if (!
    strstr($HTTP_USER_AGENT,"MSIE")){
           
    header("Content-Length: filesize($myFile)");
           }
      
           
    readfile($myFile); 
    حصلت عدة أخطاء ففي بعض الأحيان يتم تنزيل بعض أنواع الملفات بلا مشاكل في متصفح معين وفي الآخر لا تعمل بعد التنزيل
    ومشاكل أخرى
    بحثت في عدة مواقع وقمت بتجربة عدة شفرات لكن بلا جدوى

    فأرجو مِن من لديه الحل إفادتني





    __________________
    مدونتي .. دروس (PHP, JavaScript, C, Java)
    Twitter
    برمجة وتطوير المواقع والمنتديات


  2. #2
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    947


    عن طريق استخدام الدالة header
    يعني الآن ضع الروابط بدلالة ال id او اسم الملف كالتالي:
    www.site_name.com/download.php?id=55

    وتاتي بملف download.php وتضع الاوامر التالية:

    كود PHP:
    <?php
    $id
    =$_GET['id'];
    $select="select * from $table_name where id=$id";
    $query=mysql_query($select);
    $row=mysql_fetch_array($query);
    $filename ="download/".$row[$table_file_name];
    if( ! 
    is_file($filename) || $filename[0] == '.' || $filename[0] == '/' )
    die(
    "Bad access attempt.\n");
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("(anti-spam-(anti-spam-(anti-spam-(anti-spam-content-type:)))) application/force-download");
    header("(anti-spam-(anti-spam-(anti-spam-(anti-spam-content-type:)))) application/octet-stream");
    header("(anti-spam-(anti-spam-(anti-spam-(anti-spam-content-type:)))) application/download");
    header("Content-Disposition: attachment; filename=".basename($filename).";");
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: ".filesize($filename));
    readfile("$filename");
    exit();
    ?>
    وتستبدل $table_name باسم الجدول المستخدم
    في هذا السطر:
    كود PHP:
    $filename ="download/".$row[$table_file_name]; 
    و تستبدل download بعنوان المجلد الذي يحتوي على الملفات المُراد تحميلها
    وتستبدل $table_file_name بالحقل الذي به اسم الملف ذاته.
    وسيعمل بنجاح ان شاء الله

    هذا اذا كان بدلالة الاي بي
    يمكن عمله بدلالة اسم الملف نفسه بحيث يكون كالتالي:
    www.site_name.com/download.php?file=xxx.rar
    وفي هذه الحالة ستضع في مجلد ال download.php
    استبدل ال
    كود PHP:
     $id=$_GET['id']; 
    ب
    كود PHP:
    $file=$_GET['file']; 
    وفي الاستعلام استبدل السطر:
    كود PHP:
    $select="select * from $table_name where id=$id"
    بالسطر التالي:
    كود PHP:
    $select="select * from $table_name where $table_file_name=$file"
    مع استبدال $table_name باسم الجدول و $table_file_name باسم حقل الملف





    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير

  3. #3
    عضو سوبر نشيط
    تاريخ التسجيل
    Dec 2004
    المشاركات
    884


    أشكرك أخي على ردك
    بالنسبة للمتصفح FireFox يواجه خطأ عند كتابة:
    كود PHP:
    header("Content-Length: ".filesize($filename)); 
    أما بهذا الشكل لا يوجد خطأ:
    كود PHP:
    header("Content-Length: filesize($filename)"); 
    أما في متصفح IE7 يواجه خطأ في كلا الحالتين بالنسبة للملفات المضغوطة





    __________________
    مدونتي .. دروس (PHP, JavaScript, C, Java)
    Twitter
    برمجة وتطوير المواقع والمنتديات

  4. #4
    عضو سوبر نشيط
    تاريخ التسجيل
    Dec 2004
    المشاركات
    884


    إعادة رفع الموضوع





    __________________
    مدونتي .. دروس (PHP, JavaScript, C, Java)
    Twitter
    برمجة وتطوير المواقع والمنتديات

  5. #5


    موضوع تعدد طرحه ولكن بالنسبة لي لحد الان لم اجد الطريقة صالحه الاستخدام بعد من كل الطرق

    احتاج للكود موجود في داله ان امكن ... اغير فيها فقط الرابط لاضيفه لدي

    ان امكن احد يعملها






  6. #6
    عضو نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    267


    على فكره readfile هتسبب لك مشاكل لود عالي جدا جدا

    عن تجربه كان في سيرفر ملفات mp3 الزوار تقريبا ماتعدوش ال 100 او ما يقارب منها والموقع كان على سيرفر خاص

    فالسيرفر كان دايما لوود عالي جدا فانصحك لو الزوار كتير ابتعد كل البعد عن readfile





    __________________
    اللهم أكْرِمنا ولاتُهِنا

  7. #7
    عضو نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    98


    أعتقد ان الداله urlencode مفيده في بعض الحالات





    __________________
    PHP-TIGER
    professional php Coder
    Mu4all.com





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض