php:强制从不同域下载?
我想知道你们是否能为我的问题想出一些很棒的解决方案。正常的方法不起作用 好吧,我正试图用下面的php脚本强制下载任何网站上的任何文件。我只是将?p=传递到我的url和下载提示php:强制从不同域下载?,php,download,Php,Download,我想知道你们是否能为我的问题想出一些很棒的解决方案。正常的方法不起作用 好吧,我正试图用下面的php脚本强制下载任何网站上的任何文件。我只是将?p=传递到我的url和下载提示 <?php error_reporting(E_ALL); if(isset($_GET['p'])) $path = $_GET['p']; else echo "no path set!"; $file = $path; //header('Location:'
<?php
error_reporting(E_ALL);
if(isset($_GET['p'])) $path = $_GET['p'];
else echo "no path set!";
$file = $path;
//header('Location:' . $file); //works perfect, opens the file in the browser
//
header("Cache-Control: no-cache");
header("Expires: -1");
header("Content-Type: application/octet-stream;");
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($file));
echo readfile($file);
?>
然而,正如我今天发现的那样,filesize只适用于我服务器上的本地文件,而不适用于http请求。这同样适用于readfile
警告:filesize[函数.filesize]:的stat失败
pathtofiles…/downloader/d.php联机
十五
警告:
readfilesphotos.ak.fbcdn.net/hphotos-ak-snc4/hs211.snc4/…
[function.readfile]:打开失败
流:HTTP请求失败!HTTP/1.0
403年禁止
pathtofiles…/downloader/d.php联机
十六,
我想知道是否有创造性的程序员可以在这里帮助我。我有没有机会让剧本发挥作用?我只想强制下载你传递的任何文件和url
提前谢谢你,
对于不在您控制下的远程文件,您不能“强制下载”。“强制下载”告诉浏览器下载即将传输的文件。位置:某些路径告诉浏览器查找新位置,从而侦听新位置,而不是当前页面 一个选项是在服务器上创建文件的本地副本,然后将其检索给用户,这不是最佳选择。如果文件足够大,这将给人一种冻结页面的印象。为了避免这种情况,您可以读取远程文件的块,并在每次读取命令后传递 请注意,您的代码没有限制$file可以下载的内容,因此允许用户在服务器上下载几乎任何可读的文件,这是一个安全缺陷。如果您的PHP设置允许,filesize和readfile可以使用某些协议 然而,眼前的问题更为根本: HTTP请求失败!HTTP/1.0 403在路径文件中被禁止
请记住,使用PHP获取文件时,它没有用户的登录权限。脚本instaince就像一个独立的浏览器。如果资源受密码保护,则需要先让PHP脚本登录。如果可以控制远程文件,最好的方法是将文件大小存储在数据库中,然后使用readfile函数 来自PHP手册 readfile如果已启用fopen包装器,则可以使用URL作为此功能的文件名
它失败是因为403错误,而不是因为http请求,不是吗?