أقوم بعمل تحميل ملف تلقائيا باستخدام الدالة Header .
بالستخدام الكود التالي :
<?php
$filename = "thiszip.zip";
header('Content-type: application/zip');
header("Content-length: " . filesize($filename));
header('Content-Disposition: attachment; filename="' . $filename . '"');
readfile($filename);ملاحضة : مع مراعات مسار الملف في السرفر في السطر عند الداله filesize لمعرفة طول الملف بالبايت وهي تاخذ مسار الملف بالكامل وكذلك مسار الملف عند attachment; filename يوضع اسم الملف مع المسار بالكامل .
المشكلة لدي هي اني اريد ان ارسل هذا الملف تلقائيا عند التحميل . بمعنى انه عند الضغط على رابط التحميل اقوم باستدعاء هذا الكود وفي نفس الوقت بعد ان يستدعي الكود المذكور ويضهر مربع الحوار الخاص بتحميل الملف يقوم بمواصلة عرض الصفحة وهي اني اريد ان اضهر له رابط في حال لم يتم التنزيل تلقائيا بحيث يستطيع ان ينقر على الرابط ويعمل معة التنزيل .
المشكلة هي انه الـ Header عند الكود السابق لا تواصل قراءة ما بعدها من أوامر لا اعلم لماذا . فبمجر النقر على الصفحة او الرباط يضهر مباشرة مربع التحميل لتحميل الملف ولا يقوم بعرض بقية الصفحة اي يواصل تحميل الصفحة . لأني عامل كما قلت في نهاية الصفحة رابط للتحميل اليدوي بدون التلقائي . والعملية شبيه بمعلية التحميل في موقع الكواد المقتوحة gp عند النقر تحدد السرفر الذي سوف تقوم من خلاله بالتحميل بعد ذلك يقوم بعرض صفحة اخرى يضهر مربع التحميل بينما الصفحة التي ضهرت تواصل في عرض محتوياتها . أنا لدي لمشكلة ان الصفحة لا تواصل العرض وتتوقف بمجرد ضهور ملف التحميل على الشاشة .
الشي الثاني :
انه لي نفس الصفحة في المنتصف عند النقر على زر التحميل ارسل متغير إلي نفس الصفحة مرة اخرة ولكن بعلامة تبين ان هناك تحميل وأقوم باستدعاء الدالة الخاصة بالتحميل .
في نفس الصفحة لدي include لملف الإعدادات config وبه تعاريف قاعدة البيانات وغيرها .
فعند استدعاء الدالة الخاصة بالتحميل من نفس الصفحة بها طبعا header هذه الداله يخبرني بوجود output في الصفحة عند السطر include
فهل استطيع التخلص من الـ output هذا بدون عزل الصفحة إلى صفحتان .