
Admin
Well-Known Member
Staff member
Administrator
Tình hình là có một số bạn hỏi mình về vấn đề làm sao để giấu direct link như trong demo là trang get link mp3.zing.vn
Demo: https://khoc.co/mp3/
Thật ra code rất đơn giản đó là bạn đọc nó rồi set header cho nó thôi.
Sử dụng hàm fopen để open file lên rồi bạn set header.
Đầu tiên mình đọc file của direct link sau đó dùng hàm foreach để lấy header của link và set header application/octet-stream
Nội dung của header là "file transfer", tiếp theo là tên file.
Hàm fpassthru tương tự như hàm fread bạn có thể tham khảo tại php.net
Sau khi đọc xong thì ta đóng lại.
Nếu bạn nào sử dụng host vn thì làm việc này được vì tốc độ download của nó sẽ rất chậm khi các bạn dùng host nước ngoài
Demo: https://khoc.co/mp3/
Thật ra code rất đơn giản đó là bạn đọc nó rồi set header cho nó thôi.
Sử dụng hàm fopen để open file lên rồi bạn set header.
PHP:
function downloadfile($url, $filename = '', $mimetype='application/octet-stream') {
* * if($file = @fopen($url, "r")) {
* * * * foreach (get_headers($url) as $header)
* * * * * * header($header, true);
* * * * header('Content-type: '.$mimetype, true);
header("Content-Description: file transfer");
* * * * header('Content-Disposition: attachment; filename="'.$filename.'"');
* * * * fpassthru($file);
* * * * header('Location: '.$url, true);
* * * * fclose($file);
* * }else{
* * * * header($_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
* * * * header('Status: 404 Not Found');
* * }
}
Đầu tiên mình đọc file của direct link sau đó dùng hàm foreach để lấy header của link và set header application/octet-stream
Nội dung của header là "file transfer", tiếp theo là tên file.
Hàm fpassthru tương tự như hàm fread bạn có thể tham khảo tại php.net
Sau khi đọc xong thì ta đóng lại.
Nếu bạn nào sử dụng host vn thì làm việc này được vì tốc độ download của nó sẽ rất chậm khi các bạn dùng host nước ngoài