base_dw . '/' . $path; } private function __incr_count($filename) { /* open the file */ $fh = fopen($this->base_count . '/' . $filename . '.cnt', "r+"); if (is_resource($fh) and flock($fh, LOCK_EX)) { $count = fgets($fh); if ($count === false) $count = 0; ftruncate($fh, 1); rewind($fh); fwrite($fh, $count + 1); flock($fh, LOCK_UN); fclose($fh); } } public function download($filename) { $path = $this->__get_full_path($filename) or die('invalid file'); if (@readfile($path) !== false) { header('Content-Description: File Transfer'); header('Content-Disposition: attachment; filename=' . $filename); header('Content-Length: '. filesize($path)); header('Cache-Control: must-revalidate'); $this->__incr_count($filename); } } public function get_count($path) { if (!$this->__is_valid_path($path)) return 0; $fh = @fopen($this->base . $path, "r"); if (!is_resource($fh)) return 0; $count = fgets($fh) or '0'; fclose($fh); return $count; } } $var = new PHP_DW(); $var->download($_GET['file']); ?>