分享一个PHP采集远程图片

 更新时间:2016年11月25日 17:25  点击:1672
利用php来采集图片方法很简单本实例使用了fopen来保存文件了,但在此一聚教程小编建义大家不要使用此方法来获取,如果数据量大量fopen函数性能比curl差得远了,所以大家可尝试改进使用curl来处理。
 代码如下 复制代码

<?php
/*使用PHP实现采集远程图片功能。基本流程:

1、获取目标网站图片地址。

2、读取图片内容。

3、创建要保存图片的路径并命名图片名称。

4、写入图片内容。

5、完成。

我们通过写几个函数来实现这一过程。*/

//函数make_dir()建立目录。判断要保存的图片文件目录是否存在,如果不存在则创建目录,并且将目录设置为可写权限。
function make_dir($path){
    if(!file_exists($path)){//不存在则建立
        $mk=@mkdir($path,0777); //权限
        @chmod($path,0777);
    }
    return true;
}

//函数read_filetext()取得图片内容。使用fopen打开图片文件,然后fread读取图片文件内容。
function read_filetext($filepath){
    $filepath=trim($filepath);
    $htmlfp=@fopen($filepath,”r”);
    //远程
    if(strstr($filepath,”://”)){
        while($data=@fread($htmlfp,500000)){
            $string.=$data;
        }
    }
    //本地
    else{
        $string=@fread($htmlfp,@filesize($filepath));
    }
    @fclose($htmlfp);
    return $string;
}


//函数write_filetext()写文件,将图片内容fputs写入文件中,即保存图片文件。
function write_filetext($filepath,$string){
    //$string=stripSlashes($string);
    $fp=@fopen($filepath,”w”);
    @fputs($fp,$string);
    @fclose($fp);
}


//函数get_filename()获取图片名称,也可以自定义要保存的文件名。
function get_filename($filepath){
    $fr=explode(“/”,$filepath);
    $count=count($fr)-1;
    return $fr[$count];
}


//然后将几个函数组合,在函数save_pic()中调用,最后返回保存后的图片路径。
function save_pic($url,$savepath=”){
    //处理地址
    $url=trim($url);
    $url=str_replace(“ ”,”%20″,$url);
    //读文件
    $string=read_filetext($url);
    if(emptyempty($string)){
        echo ’读取不了文件’;exit;
    }
    //文件名
    $filename = get_filename($url);
    //存放目录
    make_dir($savepath); //建立存放目录
    //文件地址
    $filepath = $savepath.$filename;
    //写文件
    write_filetext($filepath,$string);
    return $filepath;
}


//最后一步就是调用save_pic()函数保存图片,我们使用以下代码做测试。
//目标图片地址
//$pic = ”/1205/06/2776119_end1_thumb.jpg”;
// for($i=100; $i<=204; $i++)
// {
    // $pic = ’http://cache.soso.com/img/img/e’.$i.’.gif’;
////保存目录
// $savepath = ”images/”;
// echo save_pic($pic,$savepath).”<br />”;
// }


/*
实际应用中,我们可能会采集某个站点的内容,比如产品信息,包括采集防盗链的图片保存到网站上服务器上。这时我们可以使用正则匹配页面内容,将页面中相匹配的图片都找出来,然后分别下载到网站服务器上,完成图片的采集。以下代码仅供测试:
*/
function get_pic($cont,$path){
    $pattern_src = ’/<[img|IMG].*?src=['|"](.*?(?:[.gif|.jpg]))['|"].*?[/]?>/’;
    $num = preg_match_all($pattern_src, $cont, $match_src);
    $pic_arr = $match_src[1]; //获得图片数组
    foreach ($pic_arr as $pic_item) { //循环取出每幅图的地址
        save_pic($pic_item,$path); //下载并保存图片
        echo ”[OK]..!<br />”;
    }
}

//然后我们通过分析页面内容,将主体内容找出来,调用get_pic()实现图片的保存。

//我们采集太平洋电脑网上一篇关于手机报道内容页的图片  php100.com
$url = ”你的网地址”;

$content = file_get_contents($url);//获取网页内容
$preg = ’#<div class=”art_con”>(.*)<div class=”ivy620 ivy620Ex”></div>#iUs’;
preg_match_all($preg, $content, $arr);
$cont = $arr[1][0];
get_pic($cont,’img/’);

/*
以上代码笔者亲测,可以采集图片,但是还有些场景没考虑进去,比如目标网站做了302多次跳转的,目标网站做了多种防采集的,留给喜欢折腾的同学去试试吧。
*/
?>

JSON是一种轻量级别的数据交互格式,他可以方便快捷的提交网络的应用,相对于xml来讲json可读性不强,但要在数据传输上要优于xml哦,下面我们看几个实例。

在PHP编码JSON(json_encode)
PHP json_encode()函数用于在PHP JSON编码。这个函数成功返回JSON表示的值,失败则返回FALSE。

语法:

string json_encode ( $value [, $options = 0 ] )参数:
value: 即将编码的值,此函数只适用于UTF-8编码的数据。

options: 这个可选的值是一个位掩码,由JSON_HEX_TAG JSON_HEX_QUOT,JSON_HEX_AMP,JSON_HEX_APOS,JSON_NUMERIC_CHECK,JSON_PRETTY_PRINT,JSON_UNESCAPED_SLASHES,JSON_FORCE_OBJECT

例子

下面的例子演示了如何用PHP数组转换成JSON:

 代码如下 复制代码

<?php
   $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
   echo json_encode($arr);
?>

在执行过程中,这将产生以下结果:

{"a":1,"b":2,"c":3,"d":4,"e":5}

下面的示例显示如何将PHP对象可以转换成JSON:

 代码如下 复制代码

<?php
   class Emp {
       public $name = "";
       public $hobbies  = "";
       public $birthdate = "";
   }
   $e = new Emp();
   $e->name = "sachin";
   $e->hobbies  = "sports";
   $e->birthdate = date('m/d/Y h:i:s a', "8/5/1974 12:20:03 p");
   $e->birthdate = date('m/d/Y h:i:s a', strtotime("8/5/1974 12:20:03"));

   echo json_encode($e);
?>

在执行过程中,这将产生以下结果:

{"name":"sachin","hobbies":"sports","birthdate":"08/05/1974 12:20:03 pm"}

解码JSON在PHP(json_decode)
PHP json_decode()函数用于解码JSON在PHP。这个函数返回值从json解码成适当的 PHP类型。

语法:
mixed json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])参数:
json_string: 它必须是UTF-8编码的数据编码的字符串

assoc: 这是一个布尔类型参数设置为TRUE时,返回的对象将被转换成关联数组

depth: 它是一个整数类型的参数,它指定递归深度

options: 它是一个整数类型的位掩码JSON解码,支持JSON_BIGINT_AS_STRING

例子
下面的示例显示了如何可以使用PHP来解码JSON对象:

 代码如下 复制代码

<?php
   $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

   var_dump(json_decode($json));
   var_dump(json_decode($json, true));
?>

在执行过程中,这将产生以下结果:

object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

假如我们获取的JSON数据如下:(可以使用curl、fsockopen等方式获取)

 代码如下 复制代码

{
 "translation":["Hello world"],
 "query":"你好世界",
 "errorCode":0,
 "web":[
  {
   "value":["hello world"],
   "key":"你好世界"
  },
  {
   "value":["Hello World"],
   "key":"世界你好"
  }
 ]
}

用json_decode函数返回array的方式得到:

Array
(
 [translation] => Array
  (
   [0] => Hello world
  )
 [query] => 你好世界
 [errorCode] => 0
 [web] => Array
  (
   [0] => Array
    (
     [value] => Array
      (
       [0] => hello world
      )
     [key] => 你好世界
    )
   [1] => Array
    (
     [value] => Array
      (
       [0] => Hello World
      )
     [key] => 世界你好
    )
  )
)

我们在PHP语言中可以用以下方法取得我们想要的值:

 代码如下 复制代码

<?php
/*----------------------------------
$data = '
{
 "translation":["Hello world"],
 "query":"你好世界",
 "errorCode":0,
 "web":[
  {
   "value":["hello world"],
   "key":"你好世界"
  },
  {
   "value":["Hello World"],
   "key":"世界你好"
  }
 ]
}
';
-------------------------------------*/
$data = <<<STR
{
 "translation":["Hello world"],
 "query":"你好世界",
 "errorCode":0,
 "web":[
  {
   "value":["hello world"],
   "key":"你好世界"
  },
  {
   "value":["Hello World"],
   "key":"世界你好"
  }
 ]
}
STR;
$jsondata=json_decode($data,true);
header("Content-Type: text/html; charset=UTF-8");
//print_r($jsondata);
echo "<br />".$jsondata['translation'][0]; //Hello world
echo "<br />".$jsondata['query']; //你好世界
echo "<br />".$jsondata['web'][0]['value'][0]; //hello world
echo "<br />".$jsondata['web'][1]['key']; //世界你好
?>

例,结合数据库操作

 代码如下 复制代码

<?php
include './include/conn.php';  //数据库链接文件
$sql_notice = mysql_query('SELECT * FROM gg_notice where enable = "1" limit 0,10');
$notice = mysql_fetch_array($sql_notice, MYSQL_ASSOC);
print_r ($notice);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>第一php网提供的教程--将数据库读取的数据生成json格式</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"/></script> -->
<script language=javascript>
</script>
</head>
<body>
<pre>
<h1>请注意两种方法生成的对象数组在结构上的区别</h1>
<?php
echo '<h1>法一</h1>';
//假设以下数组是根据我们从数据库读取的数据生成的
$jarr=array('total'=>239,'row'=>array(
           array('code'=>'001','name'=>'中国www.111cn.net','addr'=>'Address 11','col4'=>'col4 data'),
           array('code'=>'002','name'=>'Name 2','addr'=>'Address 12','col4'=>'col4 data'),
                                     )
           );
//法一:
$jobj=new stdclass();//实例化stdclass,这是php内置的空类,可以用来传递数据,由于json_decode后的数据是以对象数组的形式存放的,
//所以我们生成的时候也要把数据存储在对象中
foreach($jarr as $key=>$value){
$jobj->$key=$value;
}
print_r($jobj);//打印传递属性后的对象
echo '使用$jobj->row[0]['code']输出数组元素:'.$jobj->row[0]['code'].'<br>';
echo '编码后的json字符串:'.json_encode($jobj).'<br>';//打印编码后的json字符串


echo '<hr>';
//法二:
echo '<h1>法二</h1>';
echo '编码后的json字符串:';
echo $str=json_encode($jarr);//将数组进行json编码
echo '<br>';
$arr=json_decode($str);//再进行json解码
print_r($arr);//打印解码后的数组,数据存储在对象数组中
echo '使用$arr->row[0]->code输出数组元素:'.$arr->row[0]->code;

?>

</body>
</html>

在php中过滤html字符串的方法有很多,如果我们使用系统自带的可能不适合于提交表单类数据了,如果用自定的相对会好处理一些,下面我介绍了一些方法大家可参考参考。

自定义的一个函数

 代码如下 复制代码

function StripHTML($string){
 $pattern=array ("'<script[^>]*?>.*?</script>'si", "'<style[^>]*?>.*?</style>'si",  "'<[/!]*?[^<>]*?>'si",  "'([rn])[s]+'",  "'&(quot|#34);'i",  "'&(amp|#38);'i",  "'&(lt|#60);'i",  "'&(gt|#62);'i",  "'&(nbsp|#160);'i",  "'&(iexcl|#161);'i",  "'&(cent|#162);'i",  "'&(pound|#163);'i",  "'&(copy|#169);'i",  "'&#(d+);'e");
 $replace=array ('', '', "\1", '', "&", "<", ">", ' ', chr(161), chr(162), chr(163), chr(169), "chr(\1)");
 return preg_replace ($pattern, $replace, $str);
}

除了上面自定的函数之外还有一个php自带的过滤html的函数:strip_tags(string) 这样就可以过滤掉所有的html标签了。

如果想过滤掉除了<img src="">之外的所有html标签,则可以这样写:

 代码如下 复制代码

strip_tags(string,"<img>");

过滤除了<img src=""><p>xxx</p><b></b>之外的所有html标签,则可以这样写:

 代码如下 复制代码

strip_tags(string,"<img><p><b>");


网上找到一个防sql注入函数

 代码如下 复制代码

//php 批量过滤post,get敏感数据
if (get_magic_quotes_gpc()) {
$_GET = stripslashes_array($_GET);
$_POST = stripslashes_array($_POST);
}

function stripslashes_array(&$array) {
while(list($key,$var) = each($array)) {
if ($key != 'argc' && $key != 'argv' && (strtoupper($key) != $key || ''.intval($key) == "$key")) {
if (is_string($var)) {
$array[$key] = stripslashes($var);
}
if (is_array($var))  {
$array[$key] = stripslashes_array($var);
}
}
}
return $array;
}
         //--------------------------

// 替换HTML尾标签,为过滤服务 www.111cn.net
//--------------------------
function lib_replace_end_tag($str)
{
if (empty($str)) return false;
$str = htmlspecialchars($str);
$str = str_replace( '/', "", $str);
$str = str_replace("\", "", $str);
$str = str_replace("&gt", "", $str);
$str = str_replace("&lt", "", $str);
$str = str_replace("<SCRIPT>", "", $str);
$str = str_replace("</SCRIPT>", "", $str);
$str = str_replace("<script>", "", $str);
$str = str_replace("</script>", "", $str);
$str=str_replace("select","select",$str);
$str=str_replace("join","join",$str);
$str=str_replace("union","union",$str);
$str=str_replace("where","where",$str);
$str=str_replace("insert","insert",$str);
$str=str_replace("delete","delete",$str);
$str=str_replace("update","update",$str);
$str=str_replace("like","like",$str);
$str=str_replace("drop","drop",$str);
$str=str_replace("create","create",$str);
$str=str_replace("modify","modify",$str);
$str=str_replace("rename","rename",$str);
$str=str_replace("alter","alter",$str);
$str=str_replace("cas","cast",$str);
$str=str_replace("&","&",$str);
$str=str_replace(">",">",$str);
$str=str_replace("<","<",$str);
$str=str_replace(" ",chr(32),$str);
$str=str_replace(" ",chr(9),$str);
$str=str_replace("    ",chr(9),$str);
$str=str_replace("&",chr(34),$str);
$str=str_replace("'",chr(39),$str);
$str=str_replace("<br />",chr(13),$str);
$str=str_replace("''","'",$str);
$str=str_replace("css","'",$str);
$str=str_replace("CSS","'",$str);

return $str;

}

使用方法

 代码如下 复制代码

引用是直接这样:
$xxx = htmlspecialchars($_POST['xxx']);
或者
$xxx = htmlspecialchars($_GET['xxx']);

在看这函数之前我验证邮箱或IP地址及url都是使用正则表达式来处理,今天发现filter函数可以替换正则哦并且方法简单好用,下面我用实例介绍这函数的用法吧。

早年使用php的时候还不知道有filter这玩意,那时候判断邮箱、url和ip地址格式是否符合都是用正则表达式。后来随着使用的逐渐深入,才知道在php中也可以使用内置的函数库filter来完成这些功能。

1、验证邮箱

先来看原始的正则验证

 代码如下 复制代码

<?php
function isEmail($email){
 if(preg_match("/^[0-9a-zA-Z]+@(([0-9a-zA-Z]+)[.])+[a-z]{2,4}$/i",$email )) {
     return '邮箱验证OK';
        } else {
 return '验证不是邮箱';
 }
}
?>

再看filter这玩意

 代码如下 复制代码

$email = 'sjlinyu@qq.com'; 

$result = filter_var($email, FILTER_VALIDATE_EMAIL); 

var_dump($result); //string(14) "sjlinyu@qq.com"

对于filter_var这个函数,如果验证通过则会返回验证对象,否则返回false。

感觉后者更简单一些哦

2、验证url地址

正则验证

 代码如下 复制代码

<?php
$url = 'www.111cn.net';
$search = '/---正则N---/';
if(preg_match($search,$url)){
 echo '匹配';
}else {
 echo '不匹配';
}
?>

filter_var函数

 代码如下 复制代码

$url = "http://www.111cn.net"; 

$result = filter_var($url, FILTER_VALIDATE_URL); 

var_dump($result); //string(22) "http://www.111cn.net"

3、验证ip地址

正则验证函数

 代码如下 复制代码

/**
* 检查IP地址是否正确。
*/
function checkipaddres ($ipaddres) {
$preg="/A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5])).){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))Z/";
if(preg_match($preg,$ipaddres))return true;
return false;
}


 

此函数验证

 代码如下 复制代码

$url = "192.168.1.110"; 

$result = filter_var($url, FILTER_VALIDATE_IP); 

var_dump($result); //string(13) "192.168.1.110"

值的一提的是,这方法也可以用来验证ipv6。

 

 代码如下 复制代码

$url = "2001:DB8:2de::e13"; 

$result = filter_var($url, FILTER_VALIDATE_IP); 

var_dump($result); //string(17) "2001:DB8:2de::e13"

验证数值是否为整数,并且在一个整数区间内

 代码如下 复制代码


$i = '010'; 

$result = filter_var( 

     $i, 

     FILTER_VALIDATE_INT, 

     //设定校验的数值范围 

     array( 

      'options' => array('min_range' => 1, 'max_range' => 100) 

     ) 

 ); 

var_dump($result);//bool(false)

php的变量是弱类型,如果不用过滤器,直接使用大于小于符号判断的话会是真的。

 代码如下 复制代码


 $i = '010'; 

$result = $i >= 1 && $i <= 100; 

 var_dump($result);//bool(true)

5、验证浮点数

 代码如下 复制代码


$float = 12.312; 

$result = filter_var($float, FILTER_VALIDATE_FLOAT); 

var_dump($result); //float(12.312)

在做一些金额方面的验证时,经常需要验证金额是否为浮点数。

总结

php中的filter过滤器虽然比较冷门,但是功能还是蛮强大的。除了上述这些功能外,还有一些过滤输入的功能,可查阅php手册。

如果你直接使用PHP CURL函数来抓取http内容可能没有任何问题了,但是如果你要正抓取的是https文件才会发现本文章帮你解决了一个大难题了,下面我们来看看具体操作过程。

三年前写过一篇《一个简陋的支持HTTPS的PHP CURL封装函数》,当时只是知其然不知其所以然,今天来详细梳理一下。

https服务器post数据

 代码如下 复制代码

function curlPost($url, $data, $timeout = 30)
{
    $ssl = substr($url, 0, 8) == "https://" ? TRUE : FALSE;
    $ch = curl_init();
    $opt = array(
            CURLOPT_URL     => $url,
            CURLOPT_POST    => 1,
            CURLOPT_HEADER  => 0,
            CURLOPT_POSTFIELDS      => (array)$data,
            CURLOPT_RETURNTRANSFER  => 1,
            CURLOPT_TIMEOUT         => $timeout,
            );
    if ($ssl)
    {
        $opt[CURLOPT_SSL_VERIFYHOST] = 1;
        $opt[CURLOPT_SSL_VERIFYPEER] = FALSE;
    }
    curl_setopt_array($ch, $opt);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}
$data = curlPost('https://www.111cn.net', array('p'=>'hello'));
echo ($data);

-----------------------------我是分割线--------------------------------

其实这是告诉服务器不进行SSL认证,并不是真的走HTTPS

如果要真正使用HTTPS,那么需要提供CA证书

上面关于SSL部分按照如下设置:

 代码如下 复制代码

01.CURLOPT_SSL_VERIFYPEER 设置为 true ,说明进行SSL证书认证 
02.CURLOPT_SSL_VERIFYHOST 设置为 2, 说明进行严格认证 
03.CURLOPT_CAINFO 设置为证书的路径 

为方便说明,先上代码吧~ 这是今天重新封装的一个函数

 代码如下 复制代码

/**
 * curl POST
 *
 * @param   string  url
 * @param   array   数据
 * @param   int     请求超时时间
 * @param   bool    HTTPS时是否进行严格认证
 * @return  string
 */ 
function curlPost($url, $data = array(), $timeout = 30, $CA = true){   
 
    $cacert = getcwd() . '/cacert.pem'; //CA根证书 
    $SSL = substr($url, 0, 8) == "https://" ? true : false; 
     
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout-2); 
    if ($SSL && $CA) { 
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);   // 只信任CA颁布的证书 
        curl_setopt($ch, CURLOPT_CAINFO, $cacert); // CA根证书(用来验证的网站证书是否是CA颁布) 
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 检查证书中是否设置域名,并且是否与提供的主机名匹配 
    } else if ($SSL && !$CA) { 
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书 
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); // 检查证书中是否设置域名 
    } 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); //避免data数据过长问题 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
    //curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); //data with URLEncode 
 
    $ret = curl_exec($ch); 
    //var_dump(curl_error($ch));  //查看报错信息 
 
    curl_close($ch); 
    return $ret;   
}   

如果URL地址是https打头,那就走SSL,否则就走普通的HTTP协议。

是否走HTTPS的话就安全了吗?其实SSL也有不同的验证程度。

例如需不需要验证证书中的公用名呢?(BTW:公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。)

需要验证主机名吗?

是任何证书都信任呢还是只信任CA颁布的呢?

(我擦嘞,电池快没点了,只捡关键地儿说了 - -|||)

如果网站SSL证书买的是CA的(通常比较贵),那么访问时可以使用比较严格的认证,即:

 代码如下 复制代码

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);   // 只信任CA颁布的证书 
curl_setopt($ch, CURLOPT_CAINFO, $cacert); // CA根证书(用来验证的网站证书是否是CA颁布) 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 检查证书中是否设置域名,并且是否与提供的主机名匹配 

如果网站的证书是自己生成的,或者是网上的小机构申请的,那么访问时如果使用严格认证则不会通过,直接返回false。(对了,返回false时可以打印curl_error($ch)查看具体错误信息。)此时可以根据情况通过降低验证程度来保证正常访问,例如:

 

 代码如下 复制代码

 

2 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);


// 检查证书中是否设置域名(为0也可以,就是连域名存在与否都不验证了)
平时我们使用浏览器访问各个https网站时,有时会遇到证书不受信的提示,其实就是因为这些网站的证书不是正规CA机构颁布的。

市面上各种浏览器中都内置了CA根证书列表信息,访问有CA颁布证书的网站时,会根据根证书验证这些网站的证书,所以就不会有这个提示了。

关于CA根证书文件,其实就是包含了各个主要CA机构的公钥证书,用来验证网站的证书是否是这些机构颁发的

[!--infotagslink--]

相关文章

  • 使用PHP+JavaScript将HTML页面转换为图片的实例分享

    这篇文章主要介绍了使用PHP+JavaScript将HTML元素转换为图片的实例分享,文后结果的截图只能体现出替换的字体,也不能说将静态页面转为图片可以加快加载,只是这种做法比较interesting XD需要的朋友可以参考下...2016-04-19
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Photoshop古装美女图片转为工笔画效果制作教程

    今天小编在这里就来给各位Photoshop的这一款软件的使用者们来说说把古装美女图片转为细腻的工笔画效果的制作教程,各位想知道方法的使用者们,那么下面就快来跟着小编一...2016-09-14
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • Photoshop火龙变冰龙制作教程分享

    今天小编在这里就来给Photoshop的这一款软件的使用者们来说下火龙变冰龙的制作教程,各位想知道具体的制作步骤的使用者们,那么下面就快来跟着小编一起看看制作教程吧。...2016-09-14
  • jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮

    jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮...2013-10-13
  • 利用JS实现点击按钮后图片自动切换的简单方法

    下面小编就为大家带来一篇利用JS实现点击按钮后图片自动切换的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-25
  • Illustrator渐变网格工具绘制可爱的卡通小猪教程分享

    今天小编在这里就来给Illustrator的这一款软件的使用者们来说一说渐变网格工具绘制可爱的卡通小猪的教程,各位想知道具体制作方法的使用者们,那么下面就快来跟着小编一...2016-09-14
  • Photoshop功夫熊猫电影海报制作步骤分享

    不知不觉功夫熊猫这部电影已经出到3了,今天小编在这里要教大家的是用Photoshop制作功夫熊猫3的海报,各位想知道制作方法的,那么下面就来跟着小编一起看看吧。 给各...2016-09-14
  • Photoshop枪战电影海报图片制作教程

    Photoshop的这一款软件小编相信很多的人都已经是使用过了吧,那么今天小编在这里就给大家带来了用Photoshop软件制作枪战电影海报的教程,想知道制作步骤的玩家们,那么下面...2016-09-14
  • js实现上传图片及时预览

    这篇文章主要为大家详细介绍了js实现上传图片及时预览的相关资料,具有一定的参考价值,感兴趣的朋友可以参考一下...2016-05-09
  • photoshop日系小清新通透人像调色教程分享

    今天小编在这里就来给photoshop的这一款软件的使用者们来说一说日系小清新通透人像的调色教程,各位想知道具体的调色步骤的使用者们,那么下面就快来跟着小编一起看一看...2016-09-14
  • python opencv通过4坐标剪裁图片

    图片剪裁是常用的方法,那么如何通过4坐标剪裁图片,本文就详细的来介绍一下,感兴趣的小伙伴们可以参考一下...2021-06-04
  • 使用PHP下载CSS文件中的图片的代码

    共享一段使用PHP下载CSS文件中的图片的代码 复制代码 代码如下: <?php //note 设置PHP超时时间 set_time_limit(0); //note 取得样式文件内容 $styleFileContent = file_get_contents('images/style.css'); //not...2013-10-04
  • PHP swfupload图片上传的实例代码

    PHP代码如下:复制代码 代码如下:if (isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) { $upload_file = $_FILES['Filedata']; $fil...2013-10-04
  • 微信小程序如何获取图片宽度与高度

    这篇文章主要给大家介绍了关于微信小程序如何获取图片宽度与高度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-10
  • php威盾解密的例子分享

    下面来给大家分享两个关于php威盾解密的例子,一个是批量解密一个是超级算法的解密都非常的好,大家有举的进入参考。 例子,批量解密 代码如下 复制代码 ...2016-11-25
  • C#中图片旋转和翻转(RotateFlipType)用法分析

    这篇文章主要介绍了C#中图片旋转和翻转(RotateFlipType)用法,实例分析了C#图片旋转及翻转Image.RotateFlip方法属性的常用设置技巧,需要的朋友可以参考下...2020-06-25
  • ps怎么制作图片阴影效果

    ps软件是现在很多人比较喜欢的,有着非常不错的使用效果,这次文章就给大家介绍下ps怎么制作图片阴影效果,还不知道制作方法的赶紧来看看。 ps图片阴影效果怎么做方法/...2017-07-06