【问题标题】:PHP Display Image (SSL PROXY)PHP 显示图像(SSL 代理)
【发布时间】:2013-01-14 01:58:54
【问题描述】:

我正在尝试制作一个接受 URL 并显示它的 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;
?>

【问题讨论】:

    标签: php ssl proxy


    【解决方案1】:

    如果这确实是您的整个脚本,那么您的问题首先在于未设置$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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 2013-11-24
      相关资源
      最近更新 更多