2013-01-14 79 views
1

我試圖做的是接受一個URL,並顯示一個PHP腳本(試圖保持SSL對我的項目)PHP顯示圖像(SSL代理)

但是,我無法得到任何輸出,我腳本。沒有錯誤顯示,我無言以對。我沒有看到什麼?

<?php 

//if parameter is empty 
if((!isset($_GET['img'])) or ($_GET['img'] == '') or (!isset($per['scheme']))) 
{ 
    exit; 
} 

$per = parse_url($_GET['img']); 
print_r ($per); 
$imgurl = $_GET['img']; 
print_r ($imgurl); 
$imgurl = str_replace(' ', "%20", $imgurl); 

$aFile = getimagesize($imgurl); 
print_r ($aFile); 

//check file extension 
if($aFile == 'jpg' or $aFile == 'jpeg'){ 
     header('Content-Type: image/jpeg'); 
     imagejpeg(getimg($file)); 
} elseif($aFile == 'png') { 
     header('Content-Type: image/png'); 
     imagepng(getimg($file)); 
} elseif($aFile == 'gif') { 
     header('Content-Type: image/gif'); 
     imagegif(getimg($file)); 
} else { 
     die('not supported'); 
} 

$imgurl = $_GET['img']; 
$imgurl = str_replace(' ', "%20", $imgurl); 

function getimg($imageurl) { 
    $cache_expire = 60*60*24*365; 
    $headers[] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg, image/png'; 
    $headers[] = 'Cache-Control: maxage=. $cache_expire'; 
    $headers[] = 'Pragma: public'; 
    $headers[] = 'Accept-Encoding: None'; 
    $headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8'; 
    $user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6'; 
    $process = curl_init($imageurl); 
    curl_setopt($process, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($process, CURLOPT_REFERER, $_GET['img']); 
    curl_setopt($process, CURLOPT_HEADER, 0); 
    curl_setopt($process, CURLOPT_HTTPGET, true); 
    curl_setopt($process, CURLOPT_USERAGENT, $user_agent); 
    curl_setopt($process, CURLOPT_TIMEOUT, 30); 
    curl_setopt($process, CURLOPT_RETURNTRANSFER, 1); 
    $return = curl_exec($process); 
    curl_close($process); 
    return $return; 
} 
exit; 
?> 

這裏是腳本的編輯版本,其輸出亂碼當我使用的ReadFile:

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

//if parameter is empty 
if((!isset($_GET['img'])) or ($_GET['img'] == '')) 
{ 
    exit; 
} 

$per = parse_url($_GET['img']); 
$imgurl = $_GET['img']; 
$imgurl = str_replace(' ', "%20", $imgurl); 

$aFile = getimagesize($imgurl); 

//check file extension 
$checkmime = getimagesize($imgurl); 

if($checkmime['mime'] != 'image/png' && $checkmime['mime'] != 'image/gif' && $checkmime['mime'] != 'image/jpeg') { 
    die('not supported'); 
} else { 
    readfile("$imgurl"); 
} 

function getimg($imageurl) { 
    $cache_expire = 60*60*24*365; 
    $headers[] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg, image/png'; 
    $headers[] = 'Cache-Control: maxage=. $cache_expire'; 
    $headers[] = 'Pragma: public'; 
    $headers[] = 'Accept-Encoding: None'; 
    $headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8'; 
    $user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6'; 
    $process = curl_init($imageurl); 
    curl_setopt($process, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($process, CURLOPT_REFERER, $_GET['img']); 
    curl_setopt($process, CURLOPT_HEADER, 0); 
    curl_setopt($process, CURLOPT_HTTPGET, true); 
    curl_setopt($process, CURLOPT_USERAGENT, $user_agent); 
    curl_setopt($process, CURLOPT_TIMEOUT, 30); 
    curl_setopt($process, CURLOPT_RETURNTRANSFER, 1); 
    $return = curl_exec($process); 
    curl_close($process); 
    return $return; 
} 
exit; 
?> 

回答

0

如果這確實是你的整個腳本的問題首先在於$per['scheme']沒有被設置成會請參閱第一個if()聲明並獲得腳本exit

你檢查,如果它不是在這裏設置:!isset($per['scheme'])這樣就會使表達TRUE,從而結束腳本,原因無輸出,即使從print_r();

用這個代替:

if (empty($_GET['img'])) // Check if $_GET['img'] is not set AND is = '' (empty) 
{ 
    exit; 
} 

用途:

} else { 
    header('Content-Type: ' . $checkmime['mime']); 
    readfile($imgurl); 
}