欢迎光临
我们一直在努力

WP,wordpress插件auto-save-image升级增强版,curl实现http与https同时访问。

由于PHP升级导致旧版本的auto-save-image版本不能使用。于是花了些时间,将其修复并改进了一下,修改文件为auto-save-image.php。
1.更正:将split替换为explode

2.增加了对https网站自动保存的支持。

3.未修复的BUG。

if (get_magic_quotes_gpc()) $content1 = stripslashes($content1);

行后增加一行,并替换原来的正则表达式。

 $content1 = htmlspecialchars_decode($content1);//写入数组时写入转义字符,针对网址中含有&等符号,无法直接访问。
preg_match_all('/<\s*img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i',$content1,$img_array);//使其完全匹配

将if (str_replace(get_bloginfo(‘url’), “”, $value) == $value && str_replace(get_bloginfo(‘home’), “”, $value) == $value)之后,至
$filetime = time();之间的代码,即

$fileext = substr(strrchr($value,'.'),1);

$fileext = strtolower($fileext);

if($fileext==""||strlen($fileext)>4)$fileext = "jpg";

$savefiletype = array('jpg','gif','png','bmp');

if (in_array($fileext, $savefiletype)){ 

	if($snoopy_Auto_Save_Image->fetch($value)){

$get_file = $snoopy_Auto_Save_Image->results;

	}else{

echo "error fetching file: ".$snoopy_Auto_Save_Image->error."
";

echo "error url: ".$value;

die();

	}

 

全部替换为

$value = htmlspecialchars_decode($value);//将转义字符转回
if (strstr($value, "https://")) {
    $fileext = "jpg";
} else {
    $fileext = substr(strrchr($value, '.'), 1);//获取文件后辍名
    $fileext = strtolower($fileext);
    if ($fileext == "" || strlen($fileext) > 4) $fileext = "jpg";//对于无法获取后辍名的文件,如htts形式只有网址的文件。
}
$savefiletype = array('jpg', 'gif', 'png', 'bmp');
if (in_array($fileext, $savefiletype)) {
    $get_file = "";
    $get_file = getHTTPS($value);//以上部分为更改内容
    $filetime = time();

在最后增加函数,同时支持HTTP和HTTPS访问():

function getHTTPS($url) {
    $ch = curl_init();// 启动一个CURL会话
    if (strstr($url, "https://")) {
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);// 对认证证书来源的检查,如果非https刚不检查。
    }
    curl_setopt($ch, CURLOPT_HEADER, false);// 显示返回的Header区域内容
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);// 使用自动跳转
    curl_setopt($ch, CURLOPT_URL, $url);// 要访问的地址
    curl_setopt($ch, CURLOPT_REFERER, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);// 获取的信息以文件流的形式返回
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

转载请注明出处:达维营

仍旧有的bug是,针对极个别网站,可能出现如下图片的情况:
通过该网址https://www.dvy.com.cn/wp-content/uploads/2017/11/003111QxC.png通过方法

$headers = get_headers($value3, 1);
$type = $headers['Content-Type'];
echo $type

获取到的图片的属性为text/html,导致图片自动获取后为空白,如下图(为手动添加)。

赞(0)
版权归原作者所有,如有侵权请告知。达维营-前端网 » WP,wordpress插件auto-save-image升级增强版,curl实现http与https同时访问。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址