원래 도메인 이름에 저장된 dl.php 파일을 통해 하위 도메인에 저장된 파일을 다운로드 할 수있는 방법 (dl1.example.com) (example.com/dl.php?id=12)어떻게 php 헤더를 통해 다른 서버에 저장된 파일에 액세스 할 수 있습니까?
이에 있는가 필요의이 다운로드로 해당 파일의 경우는 DL1에있는 (다른 서버에서 하위 도메인과의 cPanel에 추가 DNS 레코드 옵션을 통해 연결) PHP 헤더 작업
dl.php이
URL을 가져온 고객에 대한 링크를 만들 수있다 db ($ path)에서 다음 함수의 입력으로 사용됩니다.
downloadFile($path,$file_name, 1024, false);
내가 다운로드 링크
을 만들기 위해 하위 도메인을 사용할 때, 내 문제가 발생 내 마스터 도메인 이름에 저장된 파일에 문제가없는
$path="http://dl1.example.com/Lamp%20with%20phpmyadmin.mp4";
:
$ 경로 변수는 변수 아래 같은 것을 포함입니다 내 코드의
모든 :
/* List of File Types */
function fileTypes($extension){
$fileTypes['swf'] = 'application/x-shockwave-flash';
$fileTypes['pdf'] = 'application/pdf';
$fileTypes['exe'] = 'application/octet-stream';
$fileTypes['zip'] = 'application/zip';
$fileTypes['doc'] = 'application/msword';
$fileTypes['xls'] = 'application/vnd.ms-excel';
$fileTypes['ppt'] = 'application/vnd.ms-powerpoint';
$fileTypes['gif'] = 'image/gif';
$fileTypes['png'] = 'image/png';
$fileTypes['jpeg'] = 'image/jpg';
$fileTypes['jpg'] = 'image/jpg';
$fileTypes['rar'] = 'application/rar';
$fileTypes['ra'] = 'audio/x-pn-realaudio';
$fileTypes['ram'] = 'audio/x-pn-realaudio';
$fileTypes['ogg'] = 'audio/x-pn-realaudio';
$fileTypes['wav'] = 'video/x-msvideo';
$fileTypes['wmv'] = 'video/x-msvideo';
$fileTypes['avi'] = 'video/x-msvideo';
$fileTypes['asf'] = 'video/x-msvideo';
$fileTypes['divx'] = 'video/x-msvideo';
$fileTypes['mp3'] = 'audio/mpeg';
$fileTypes['mp4'] = 'audio/mpeg';
$fileTypes['mpeg'] = 'video/mpeg';
$fileTypes['mpg'] = 'video/mpeg';
$fileTypes['mpe'] = 'video/mpeg';
$fileTypes['mov'] = 'video/quicktime';
$fileTypes['swf'] = 'video/quicktime';
$fileTypes['3gp'] = 'video/quicktime';
$fileTypes['m4a'] = 'video/quicktime';
$fileTypes['aac'] = 'video/quicktime';
$fileTypes['m3u'] = 'video/quicktime';
return $fileTypes[$extention];
};
/*
Parameters: downloadFile(File Location, File Name,
max speed, is streaming
If streaming - videos will show as videos, images as images
instead of download prompt
*/
function downloadFile($fileLocation, $fileName, $maxSpeed = 100, $doStream = false) {
if (connection_status() != 0)
return(false);
// in some old versions this can be pereferable to get extention
// $extension = strtolower(end(explode('.', $fileName)));
$extension = pathinfo($fileName, PATHINFO_EXTENSION);
$contentType = fileTypes($extension);
header("Cache-Control: public");
header("Content-Transfer-Encoding: binary\n");
header('Content-Type: $contentType');
$contentDisposition = 'attachment';
if ($doStream == true) {
/* extensions to stream */
$array_listen = array('mp3', 'm3u', 'm4a', 'mid', 'ogg', 'ra', 'ram', 'wm',
'wav', 'wma', 'aac', '3gp', 'avi', 'mov', 'mp4', 'mpeg', 'mpg', 'swf', 'wmv', 'divx', 'asf');
if (in_array($extension, $array_listen)) {
$contentDisposition = 'inline';
}
}
if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
$fileName = preg_replace('/\./', '%2e', $fileName, substr_count($fileName, '.') - 1);
header("Content-Disposition: $contentDisposition;
filename=\"$fileName\"");
} else {
header("Content-Disposition: $contentDisposition;
filename=\"$fileName\"");
}
header("Accept-Ranges: bytes");
$range = 0;
$size = filesize($fileLocation);
if (isset($_SERVER['HTTP_RANGE'])) {
list($a, $range) = explode("=", $_SERVER['HTTP_RANGE']);
str_replace($range, "-", $range);
$size2 = $size - 1;
$new_length = $size - $range;
header("HTTP/1.1 206 Partial Content");
header("Content-Length: $new_length");
header("Content-Range: bytes $range$size2/$size");
} else {
$size2 = $size - 1;
header("Content-Range: bytes 0-$size2/$size");
header("Content-Length: " . $size);
}
if ($size == 0) {
die('Zero byte file! Aborting download');
}
set_magic_quotes_runtime(0);
$fp = fopen("$fileLocation", "rb");
fseek($fp, $range);
while (!feof($fp) and (connection_status() == 0)) {
set_time_limit(0);
print(fread($fp, 1024 * $maxSpeed));
flush();
ob_flush();
sleep(1);
}
fclose($fp);
return((connection_status() == 0) and ! connection_aborted());
}
/* Implementation */
// downloadFile('path_to_file/1.mp3', '1.mp3', 1024, false);
if(isset($_GET['i']) && is_numeric($_GET['i'])){
$file_id=input_security($_GET['i']);
$linkque=mysqli_query($connection,"SELECT * FROM download_links WHERE dl_id='".$file_id."'");
$checkexist=mysqli_num_rows($linkque);
$f_row=mysqli_fetch_array($linkque);
if($checkexist==0){
echo 'Invalid file id';
}else if($checkexist>=1 && $f_row['payment_model']=="free"){
/* Function: download with resume/speed/stream options */
$path=$f_row['url'];
$sep_parts = pathinfo($path);
$file_name = $sep_parts['basename'];
$file_ext = $sep_parts['extension'];
if (file_exists($path)) {
downloadFile($path,$file_name, 1024, false);
}else{
echo "File is not exist or url is wrong.";
}
}else if($checkexist>=1 && $f_row['payment_model']=="nofree"){
if(isset($_SESSION['username'])){
$client_id=input_security($_SESSION['username']);
$client_id_query="SELECT userid FROM users WHERE emailuser='".$client_id."'";
$session_query=mysqli_query($connection,$client_id_query);
$clientidrow=mysqli_fetch_assoc($session_query);
$client_id=$clientidrow['user_id'];
$link_pid=$f_row['post_id'];
$userorderque=mysqli_query($connection,"SELECT * FROM user_orders WHERE post_id='".$link_pid."' AND order_client_id='".$client_id."'");
$checkorderexist=mysqli_num_rows($userorderque);
$checktobuy_row=mysqli_fetch_array($userorderque);
if($checkorderexist>=1 && $checktobuy_row['paid']==1){
$path=$f_row['url'];
$sep_parts = pathinfo($path);
$file_name = $sep_parts['basename'];
$file_ext = $sep_parts['extension'];
if (file_exists($path)){
//echo "thank you for purchase and support us. You can download now.";
downloadFile($path,$file_name, 1024, false);
}else{
echo "File is not exist or url is wrong.";
}
}else if($checkorderexist>=1 && $checktobuy_row['paid']==0){
echo "You Need to pay for download this file";
}
}else{
echo "This file needs to login";
}
}else{
echo "You don't have permission to download this file please purchase this product and trying to download again";
}
}else{
header('Location: index.php');
}
어떻게에 저장된 내 스크립트 (dl1.example.com) 하위 도메인으로 내 도메인 이름에 연결되어 내 다른 서버에 저장된 파일에 액세스 할 수 있습니다 내 도미 n 이름 (내 마스터 웹 서버 호스트 (example.com)을 의미)?
나는 당신의 통신 흐름이 얼마나 그것은 100 % 명확하지 않다 어떤 도움
당신이하려는 일이 명확하지 않습니다. – Scriptonomy
제품 링크를 공유하고 싶지만 지불하는 고객 만 있습니다. –