ایا فایل واقعا دانلود شده

asdb20

Member
سلام
وقتی که یک فایل می خواد دانلود بشه مرورگر پیغام میده و اگه کاربر کنسل کنه چطور باید بفهمیم که کنسل شده و دیگه برای فایل کنتور دانلودی نندازیم
من از مثال php.net استفاده میکنم
PHP:
$file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
 

k2-4u

Well-Known Member
دستور اجرای کنتر رو آخر کد بگذار
یعنی فیکس قبل از exit
 

asdb20

Member
این کار هم کردم نمیشه
PHP:
 $file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);

/* من کد رو اینجا میزارم ولی بازهم در صورت کنسل کردن کاربر اجرا میشه و یه شماره به کنتور اضافه میشه */   

 exit;
{
 

k2-4u

Well-Known Member
یک کار دیگه هم میشه کرد شما
می تونی با حقله while مقدار رو بگیری از . فایل . بعد
چک کنی هر وقت رسید آخر فایل .
کنتر رو اجرا کنی
PHP:
do{
	if(feof($fp)){ 
		//counter code
	}
	echo fread($fp,1000);

}while(!feof($fp));
 

asdb20

Member
نه اینم نشد
میشه اول هدر ها رو فرستاد اما وقتی کاربر ok میکنه دیگه نمیشه فایل رو خوند مثل اینکه فایل تو سرور کش میشه
 

k2-4u

Well-Known Member
داستان پیچیده شده !!
:-? .
یک سوال . بدون دستور ob_clean (کلا همه دستور های ob)
هم تست کردی؟
 

asdb20

Member
بله کلا همه جوره با ob بدون ob تست کردم ولی نشد هرچی هم سرچیدم هیچی.
 
بالا