要添加域名解析要钱么。。

看守所执法管理问题择要解析()-土地公文库
看守所执法管理问题择要解析()
看守所执法管理问题择要解析()
o 六、关于监内管控模式o 监内确保安全,有一个监内的勤务合理组织、各类安全资源科学配臵的问题。o 这需要我们对看守所业务,特别是重点的区域、环节、对象、时段有准确的把握。 o 监内管控模式,关涉我们看守所的核心业务。o (一)看守所需要重点防控的部位、对象、环节举要:o 1、“准监区”管理防控:是指收押接待室、审讯室与监墙之间的区域。目前开来这个区域问题不少:存在第二通道;区域内存在在押人员可资利用的器具;审讯室隔离不牢固;进出该区域的人员控制不严格等等。o 2、重点对象管控;o 3、出所就医等环节;o 4、以出所辨认等名义进行特审;o 5、春节等重点时段(看守所不像学校,学生在节假日是放假的,而在押人员是不放假的,且情绪更加不稳定)。o (二)监室内的管控模式探讨。o 看守所监室内的管控模式,是一直困扰我们的问题。从管理防范层面上讲,关系看守所的安全;从深化监管勤务层面上讲,是我们必须逾越的一个屏障。可以说,监室内的管理模式,关涉监管的核心业务。o 目前我们监室内的管理中,面临着一个矛盾:民警要全方位管理,往往时间和精力不够;假如放手让在押人员去管(设立小组长等),掌控不力,会引发“牢头狱霸”等一系列。o 那么,我们怎样解决好上面提到的矛盾?做到既合理合法,又尽可能地优化监室内的管控?至少有两个方面我们是应该做好的:o 一是在押人员的考核。o 2008年,我们出台了有关在押人员考核的两个《办法》,有的看守所执行的比较好,也尝到了甜头。而不少看守所没有很好地执行,出现不少不规范的情形。如:分数加减随意;有的看守所在在押人员投劳之前一次性考核;有的考核中审核审批不规范;有的对考核表随意涂改。o 这里,首先要说明的是,对在押人员考核,是一项严格的执法行为。在押人员的分数,是关涉到他今后减刑假释的。假如某一天,检察院或者纪委督察对某一名第6 / 10页
全文分10页阅读一台主机要解析www.abc.edu.cn的IP地址,如果这台主机配置的域名服务 - 网考网试题库
|&&&&&&&&&&|&&&&&课程中心&&&&&|&&&&&
计算机二级考试
当前位置: >>
计算机二级考试
一台主机要解析www.abc.edu.cn的IP地址,如果这台主机配置的域名服务
来源:网考网 【网考网:专业网络在线考试网站】
【单选题】
一台主机要解析www.abc.edu.cn的IP地址,如果这台主机配置的域名服务器为202.120.66.68,因特网顶级域名服务器为11.2.8.6,而存储www.abc.edu.cn与其p地址对应关系的域名服务器为202.113.16.10,那么这台主机解析该域名通常首先查询______。A.202.120.66.68域名服务器B.11.2.8.6域名服务器C.202.113.16.10域名服务器D.不能确定,可以从这3个域名服务器中任选一个
根据网考网考试中心的答案统计,该试题:30%的考友选择了A选项 18%的考友选择了B选项 47%的考友选择了C选项 5%的考友选择了D选项
考友答案与解析&&&&
相关试题:
第31题: A.自陷B.中断C.通道命令D.跳转指令答案解析与讨论:第27题: A.ⅠB.ⅡC.Ⅰ和ⅢD.Ⅰ和Ⅳ答案解析与讨论:第91题: A.网络协议B.网络操作系统类型C.覆盖范围与规模D.网络服务器类型与规模答案解析与讨论:第11题: A.直接交换、地址交换和存储转发交换B.直接交换、间接交换和存储转发交换C.直接交换、改进直接交换和存储转发交换D.直接交换、存储转发交换和改进存储转发交换答案解析与讨论:第95题: A.单一的统一的全球性网络B.单一的统一的传输计算机数据的网络C.单一的统一的传输音频、视频的网络D.可互操作的网络集合答案解析与讨论:第4题: A.局域网易于建立,但不易于维护B.局域网易于建立,但不易于扩展C.局域网易于建立,且易于维护D.以上说法都不对答案解析与讨论:
大家正在做大家都在搜:
扫描二维码安装房天下APP
手机浏览器访问房天下
> > 问题详情
高二历史选择题要解析!西门子等制成发电机并使它实际可用,开启了以电气化为特征的第二次工业革命
限制君权。”作者认为他们提不出新的社会方案的根源是A.当时是两个世界科技中心.张岱年在《中国文化概论》中指出..自然经济占统治地位B.量子论D,具有一种时代的缺陷、提倡学校议政等办法来修补封建专制制度,只能用扩大相权..统治者政策的引导D,答案是A.:美国和德国提问.,中国的圣人正试图去发现人类社会和贤明政治的根本原则:“明...
限制君权。”作者认为他们提不出新的社会方案的根源是A.当时是两个世界科技中心.张岱年在《中国文化概论》中指出..自然经济占统治地位B.量子论D,具有一种时代的缺陷、提倡学校议政等办法来修补封建专制制度,只能用扩大相权..统治者政策的引导D,答案是A.:美国和德国提问.,中国的圣人正试图去发现人类社会和贤明政治的根本原则:“明清时期的早期启蒙思想家们先天不足:“当希腊人正在探讨物质世界的性质.社会的剧烈变动C.资本主义萌芽十分微弱B..相对论提问:我选了D.明清时期君主专制空前强化提问:我选了B:“、印度思想家正在思考灵魂和神的关系时.但是为什么不能选B英国科技史专家丹皮尔在科学史中写道,开启了以电气化为特征的第二次工业革命,而生命在本质上是一体的..进化论C.,实在是对神学的真正贡献.世界科技中心多元化C,都先后认识到必须把世界的创造看着是一个连续不断的过程。麻烦解读一下这一段话.。”以上省略的内容应为(
)A,伦琴发现X射线:答案是B,诶.黄宗羲等代表地主阶级D,不久神学家的领袖和胆怯的教士们.中国传统文化的束缚和影响C.;内燃机的诞生及卡尔本茨制造出由内燃机驱动的骑车。”导致中国思想家关注这一主题的主原因是A.德国是当时世界上科技中心之一D.经典力学B,由此可以看出A西门子等制成发电机并使它实际可用,爱因斯坦提出相对论:答案是C、唐甄们提不出新的社会方案.百家争鸣局面的出现提问.我选了C《世界文明史》《世界文明史》中说.求详细解析.美国科技水平超越德国B,答案是B!各位大神.把难于成立的信条摧毁,黄宗羲,开创物理学新时代
浏览次数:0
小伙伴们还在答题的路上,先看看下面这些内容吧~
吸尘器依照详细用处可分为家用吸尘器、车用吸尘器和工业吸尘器,各类吸尘器的品牌排行,也各有的纷歧样。工业吸尘器不比家用吸尘器,工业吸尘器先要是适用在一些清洗面积较大的区域,工业吸尘器便是一种能够搜集工业出产中发作的废弃物、进行空气净化和环境打扫的一种电器。那么工业吸尘器价格,工业吸尘器的功用与特征呢 []
浏览量:16
装修总预算0万元
卫生间:0元
扫一扫下载房天下装修
扫码即获10000套家居设计案例
申请使用此项服务,即视为接受、、
下载房天下APP
提问获取更多回答
ask:3,asku:4,askr:49,askz:19,askzx0:370,ask0:0,RedisW:11askR:1,askD:459 mz:nohit,askU:0,askT:0askA:461
Copyright &
北京拓世宏业科技发展有限公司
Beijing Tuo Shi Hong Ye Science&Technology Development Co.,Ltd 版权所有
违法信息举报邮箱:对于做过数据采集的人来说,cURL一定不会陌生。虽然在PHP中有file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情景,file_get_contents显得有点无能为力。因此,本文将为你介绍采集神器cURL的使用。
火狐浏览器(FireFox) + Firebug
“工欲善其事,必先利其器。” 在分析案例之前,先让我们学习一下如何利用神器Firebug获取我们必要的信息。
使用F12打开Firebug,我们可以得到如图(一)界面:
箭头图标是“元素选择”工具,单击一次会高亮图标,同时,鼠标在页面内的移动会同时在HTML菜单中选定相应的内容,此时单击内容则表示选定了该元素,图标高亮取消。如图(二)所示:
JS里面的console.log系列函数的打印就是在这里输出。
HTML内容,注意这里看到的不一定是采集要解析的内容,采集时候对内容的分析,一律以查看源码(Ctrl+U)为准,这里只是能快速定位元素的结构,然后再选择一个比较特殊的参照,在源码中定位相应的位置。
比如,你在HTML里面看到一个标签是&div id=&demo&
class=&demo&&Demo&/div&,但是你查看源码时候看到的内容可能是&div class=&demo& id=&demo&&Demo&/div&,如果你对采集内容按照前者去做正则匹配,那么你会得不到结果。
这里是CSS文件内容
这里是Javascript文件内容
Dom节点内容
每一个请求链接的数据,这里是我们采集要关注和分析的地方,它能够显示每一个请求的参数、请求头、Cookie数据等。在页面提交会刷新的情况下,需要使用保持,使得页面请求内容在刷新后仍然留着控制台中,如图(三)所示:
另外,火狐还有一款 Tamper data 扩展也能得到请求数据,必要时可以安装使用。
Cookie数据
在图(一)中还看到下面有很多可选的小菜单项,其中保持是我们要关注的,当选择它的时候,即使提交表单刷新了页面,下面内容区域的数据还是会保留,这个对于分析提交数据特别关键。
我们在分析采集请求的时候,主要关心“网络”菜单里的请求数据,必要时候使用“保持”以查看刷新页面的请求数据,请求前可以使用“清除”先清除下面的内容。
一、简单的采集
这里所指的简单采集,是指一个单一页面GET请求的采集,它简单得即使通过file_get_contents函数也能轻松获得页面返回结果。
代码片段之file_get_contents
$url = 'http://demo.zjmainstay.cn/php/curl/simple.html';
$content = file_get_contents($url);
代码片段之cURL
$url = 'http://demo.zjmainstay.cn/php/curl/simple.html';
= curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//返回数据不直接输出
$content = curl_exec($ch);
//执行并存储结果
curl_close($ch);
二、需要参数的采集
这种情况,页面请求需要传入一些参数,可以是GET请求,也可以是POST请求。这种情况的采集,使用file_get_contents外带一些参数还是可以实现的,但是这里我们将不再展示。
代码片段之cURL GET
这种请求,我们可以选择搜索引擎作为演示,比如我百度搜索一个词语“PHP cURL”,在输入回车后,我们会得到一个类似http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&ch=&tn=baidu&bar=&wd=PHP%20cURL的链接,注意这里的链接可能不同浏览器、不同入口方式访问得到不一样结果,因此不必介意链接是否一样。通过输入多个关键词并观察链接,我们可以确定 wd 参数就是我们要传入的动态参数,而其他参数则可以不变,因此得到我们下面的采集代码。
= 'PHP cURL';
= 'http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&ch=&tn=baidu&bar=&wd=' . urlencode($keyword);
= curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//返回数据不直接输出
$content = curl_exec($ch);
//执行并存储结果
curl_close($ch);
有些时候,一些参数并不是必须的,这时候我们可以删掉它,比如上面的链接可以只保留http://www.baidu.com/s?ie=utf-8&wd=PHP%20cURL,ie=utf-8 这个参数可能影响结果的编码,所以暂且留着它。就这样简单的代码,我们就可以采集到百度搜索的结果了。
代码片段之cURL POST
对于POST类型的请求,我们平时并不少见,比如有些搜索就是使用POST方式提交,这时候我们就需要使用POST类型来提交参数了。这个在PHP cURL里面有相应的参数:CURLOPT_POST 和 CURLOPT_POSTFIELDS , CURLOPT_POST 的设置可以指定当前提交是否为POST方式,CURLOPT_POSTFIELDS则用于设定提交的参数,可以是参数串,也可以是参数数组,比如:
curl_setopt($ch, CURLOPT_POSTFIELDS, 'ie=utf-8&wd=PHP%20cURL');
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
'ie'
=& 'utf-8',
'wd'
=& 'PHP%20cURL',
下面是我做的一个POST模拟搜索,后端是使用了前面的百度关键词搜索,基本原理就是,客户端提交一个关键词到我服务器,我服务器使用该关键词请求百度的搜索,然后得到结果,返回到客户端。
如图(四)是利用Firebug对请求数据的分析,得到我们需要提交的请求链接和请求参数:
然后下面是我们的代码:
= 'PHP cURL';
//参数方法一
= 'wd=' . urlencode($keyword);
//参数方法二
'wd'
=& urlencode($keyword),
= 'http://demo.zjmainstay.cn/php/curl/search.php';
= curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//返回数据不直接输出
curl_setopt($ch, CURLOPT_POST, 1);
//发送POST类型数据
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
//POST数据,$post可以是数组,也可以是拼接
$content = curl_exec($ch);
//执行并存储结果
curl_close($ch);
var_dump($content);
三、需要Referer的采集
对于一些程序,它可能判断来源网址,如果发现referer不是自己的网站,则拒绝访问,这时候,我们就需要添加CURLOPT_REFERER参数,模拟来路,使得程序能够正常采集。
= 'PHP cURL';
//参数方法一
= 'wd=' . urlencode($keyword);
//参数方法二
'wd'
=& urlencode($keyword),
= 'http://demo.zjmainstay.cn/php/curl/search_refer.php';
= 'http://demo.zjmainstay.cn/';
//来路地址
= curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//返回数据不直接输出
curl_setopt($ch, CURLOPT_REFERER, $refer);
//来路模拟
curl_setopt($ch, CURLOPT_POST, 1);
//发送POST类型数据
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
//POST数据,$post可以是数组,也可以是拼接
$content = curl_exec($ch);
//执行并存储结果
curl_close($ch);
var_dump($content);
search_refer.php的源码如下,做了简单的Referer判断拦截:
if(empty($_POST['wd'])) {
exit('Deny empty params.');
//Referer判断
if(stripos($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']) === false) {
exit('Deny');
= addslashes(trim(strip_tags($_POST['wd'])));
= 'http://www.baidu.com/s?ie=utf-8&wd=' . urlencode($keyword);
= curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//返回数据不直接输出
$content = curl_exec($ch);
//执行并存储结果
curl_close($ch);
四、需要cookie支持的采集
对于模拟登录的应用,单单提交参数和模拟来路并不能解决问题,这时候我们就需要保存或者提交相应的Cookie参数,这个在PHP cURL里面也提供了相应的参数:
CURLOPT_COOKIE: 直接使用字符串方式提交cookie参数
CURLOPT_COOKIEFILE: 使用文件方式提交cookie参数
CURLOPT_COOKIEJAR: 保存提交后反馈的cookie数据
下面是PHP100的模拟登录示例:
header(&content-Type: text/ charset=UTF-8&);
$cookie_file = tempnam('./temp', 'cookie');
$login_url=&http://bbs.php100.com/login.php&;
$post_fields=&cktime=36000&step=2&pwuser=username&pwpwd=password&;
//提交登录表单请求
$ch=curl_init($login_url);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_fields);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file); //存储提交后得到的cookie数据
curl_exec($ch);
curl_close($ch);
//登录成功后,获取bbs首页数据
$url=&http://bbs.php100.com/index.php&;
$ch=curl_init($url);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie_file); //使用提交后得到的cookie数据做参数
$contents=curl_exec($ch);
curl_close($ch);
//转码显示
echo iconv('gbk', 'UTF-8', $contents);
五、压缩网页采集(gzip)
有些没有接触过压缩页面的朋友估计会在这里被坑死,因为他们会发现采集回来的内容是乱码,并且无论使用iconv还是强大的mb_convert_encoding都无法还原数据,然后又没有概念,各种抓狂却找不到方法,哈哈,我曾经也是这样~
如图(五)是乱码表现形式:
还好最后功夫不负有心人,还是找到了,它就是CURLOPT_ENCODING参数。
比如,采集搜狐的新闻时候就遇到gzip压缩问题,下面是示例:
$url = 'http://news.sohu.com/';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回数据不直接输出
curl_setopt($ch, CURLOPT_ENCODING, &gzip&); //指定gzip压缩
$content = curl_exec($ch); //执行并存储结果
curl_close($ch);
手册说明:支持的编码有&identity&,&deflate&和&gzip&。如果为空字符串&&,请求头会发送所有支持的编码类型。
后面一句表明,使用curl_setopt($ch, CURLOPT_ENCODING, &&);也是可以的,但是不能不加这个参数。
六、SSL链接的采集
有些请求链接是https类型的,这时候使用cURL采集可能会失败,这时候,我们可以使用 var_dump(curl_error($ch));的方法打印错误提示,然后根据错误提示查找相应的解决方案。比如SSL错误常见提示:SSL certificate problem: unable to get local issuer certificate,这时候,我们就需要利用参数:CURLOPT_SSL_VERIFYPEER 和 CURLOPT_SSL_VERIFYHOST 来禁用SSL证书的验证,我尝试过只使用CURLOPT_SSL_VERIFYPEER参数禁用失败,所以大家最好同时使用两个参数。
下面是代码示例:
$searchStr = 'RCHK';
= 'accion=LocalizaUno&numero='.$searchStr.'&ecorreo=&numeros=';
= 'https://aplicacionesweb.correos.es/localizadorenvios/track.asp';
= curl_init($url);
//初始化curl
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//返回数据不直接输出
curl_setopt($ch, CURLOPT_POST, 1);
//发送POST类型数据
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
//POST数据,$post可以是数组,也可以是拼接参数串
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//SSL 报错时使用
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
//SSL 报错时使用
$contents = curl_exec($ch);
//执行并存储结果
// var_dump(curl_error($ch));
//获取失败是使用(采集错误提示)
curl_close($ch);
七、代理采集
大家都知道,国内存在万恶的墙,所以,假如我们需要获取某些被墙数据时,就需要用到国外代理服务器;又或者我们需要采集大量数据时,需要不断切换IP,也会用到代理。
使用代理在PHP cURL里面有几个相对应的参数:CURLOPT_PROXY、CURLOPT_PROXYPORT 和 CURLOPT_PROXYUSERPWD,还有另外几个,这里不列举。
CURLOPT_PROXY 指定代理IP参数
CURLOPT_PROXYPORT 指定代理端口参数
CURLOPT_PROXYUSERPWD 指定需要验证的代理的账号密码,&[username]:[password]&格式的字符串
关于代理账号获取,大家自己发挥,我这里提供网上搜索到的一个列表:
下面是代理采集示例:
$url = 'http://demo.zjmainstay.cn/php/curl/dump_ip.php?t=' . time();
echo &本地IP:& . file_get_contents($url) . &\n伪造IP:&;
= '183.224.1.116';
= '80';
//伪造请求头参数,如果是高匿代理这里不需要提供
$header = array(
'X-FORWARDED-FOR: ' . $ip,
'CLIENT-IP: ' . $ip,
= curl_init($url);
//初始化curl
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_PROXY, $ip);
curl_setopt($ch, CURLOPT_PROXYPORT, $port);
$content = curl_exec($ch);
//执行并存储结果
curl_close($ch);
八、 多线程采集
对于大量采集工作,为了提高采集效率,使用PHP cURL提供的多线程采集是必不可少的。手册上提供的多线程采集例子好像都不太好用,我刚开始也从里面测试了几个例子,但是发现都是执行卡死,根本无法执行完成,前几天突然又测试了一下,然后发现curl_multi_info_read函数下面的Example #1是可以执行的,它的内容在$res上,但是没有打印出来,而且雅虎的请求比较慢,会卡住,前面两个链接都能正常返回。
不过,还好当时的例子不好用,然后我经过搜索找到了一个很厉害的项目, ,它对PHP cURL Multi 进行了一个良性扩展的封装,能够很好地提供采集支持。
关于CurlMulti的使用我就不多介绍,官网上面提供了demo,使用过程有技术难题可以直接加入Q群讨论, 和其他的采集大牛都会提供技术解答帮助。
下面是PHP cURL Multi的一个简单示例:
$urls = array(
&http://demo.zjmainstay.cn/php/curl/curl_multi_1.php&,
&http://demo.zjmainstay.cn/php/curl/curl_multi_2.php&,
$mh = curl_multi_init();
foreach ($urls as $i =& $url) {
$conn[$i] = curl_init($url);
curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1);
//不直接输出结果
curl_multi_add_handle($mh, $conn[$i]);
$res = array();
$status = curl_multi_exec($mh, $active);
$info = curl_multi_info_read($mh);
if (false !== $info) {
//采集信息处理
$res[] = array(
'content'
=& curl_multi_getcontent($info['handle']),
'info'
curl_close($info['handle']);
} while ($status === CURLM_CALL_MULTI_PERFORM || $active);
curl_multi_close($mh);
var_dump($res);
九、302跳转(301跳转)
对于一些应用,比如模拟登录,如果遇上302跳转,会导致cookie丢失而使得模拟登录失败,请求现象如图(六)所示:
这个时候,可以使用:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
关于CURLOPT_FOLLOWLOCATION,手册说明是:
启用时会将服务器服务器返回的&Location: &放在header中递归的返回给服务器,使用CURLOPT_MAXREDIRS可以限定递归返回的数量。
我个人理解,通俗点讲就是后面的跳转会继续跟踪访问,而且cookie在header里面被保留了下来。
十、模拟上传文件
在PHP手册的curl_setopt函数中,关于CURLOPT_POSTFIELDS有如下描述:
全部数据使用HTTP协议中的&POST&操作来发送。要发送文件,在文件名前面加上@前缀并使用完整路径。这个参数可以通过urlencoded后的字符串类似'para1=val1&para2=val2&...'或使用一个以字段名为键值,字段数据为值的数组。如果value是一个数组,Content-Type头将会被设置成multipart/form-data。
对于上传文件,这句话包含两个信息:
1. 要上传文件,post的数据参数必须使用数组,使得Content-Type头将会被设置成multipart/form-data。
2. 要上传文件,在文件名前面加上@前缀并使用完整路径。
因此,模拟文件上传可以按照如下实现:
//上传D盘下的test.jpg文件,文件必须存在,否则curl处理失败且没有任何提示
$data = array('name' =& 'Foo', 'file' =& '@d:/test.jpg');
$ch = curl_init('http://localhost/upload.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
本地测试的时候,在upload.php文件中打印出$_POST和$_FILES即可验证是否上传成功,如下:
print_r($_POST);
print_r($_FILES);
输出结果类似:
Array ( [name] =& Foo ) Array ( [file] =& Array ( [name] =& test.jpg [type] =& application/octet-stream [tmp_name] =& D:\xampp\tmp\php2EA0.tmp [error] =& 0 [size] =& 139999 ) )
关于CURLOPT_POSTFIELDS的赋值,另外补充一句描述:
传递一个数组到CURLOPT_POSTFIELDS,cURL会把数据编码成 multipart/form-data,而然传递一个URL-encoded字符串时,数据会被编码成 application/x-www-form-urlencoded。
curl_setopt($ch, CURLOPT_POSTFIELDS, 'param1=val1&param2=val2&...');
curl_setopt($ch, CURLOPT_POSTFIELDS, array('param1' =& 'val1', 'param2' =& 'val2', ...));
相当于html的form表单中:
&form method=&post& action=&upload.php&&
&form method=&post& action=&upload.php& enctype=&multipart/form-data&&
十一、发送与获取json数据
发送json数据,在控制台中的表现主要如图(七)所示:
第一条发送的是json格式的数据,
第二条发送的是以\n分割的数据,
第三条发送的是以&分割的数据。
这个在ajax请求的时候,只需要添加contentType参数即可,如:
var data = [&name:Zjmainstay&, &website:http://www.zjmainstay.cn&];
url: 'http://test.com/curl/testPostJsonData.php',
type: 'post',
data: data.join(&\n&),
contentType: 'text/plain',
success: function(result) {
console.log(result);
error: function(msg) {
console.log(msg);
对于这类发送json数据的请求,复制cURL命令时,你会发现其中根本没有发送数据,如:
curl 'http://test.com/curl/testPostJsonData.php' -X POST -H 'Accept: */*' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: zh-CN,q=0.8,en-US;q=0.5,q=0.3' -H 'Cache-Control: max-age=0' -H 'Connection: keep-alive' -H 'Content-Length: 48' -H 'Content-Type: text/plain' -H 'Cookie: __utma=' -H 'Host: test.com' -H 'Referer: http://test.com/curl/ajaxJsonData.html' -H 'User-Agent: Mozilla/5.0 (M Intel Mac OS X 10.10; rv:47.0) Gecko/ Firefox/47.0' -H 'X-Requested-With: XMLHttpRequest'
对于这种数据,我们要用PHP cURL模拟发送的话,需要发送相应的header参数,示例:
$url = 'http://test.com/curl/testPostJsonData.php';
$data = '{&a&:&b&}';
$length = strlen($data);
$header = array(
'Content-Length: ' . $length,
//不是必需的
'Content-Type: text/json',
= curl_init($url);
//初始化curl
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$content = curl_exec($ch);
//执行并存储结果
curl_close($ch);
#\n分割数据
'name:Zjmainstay',
'website:http://www.zjmainstay.cn',
$data = implode(&\n&, $data);
#&分割数据
$data = 'name:Zjmainstay&website:http://www.zjmainstay.cn';
那么,对于这种给服务器端发送json数据的程序,服务器端是怎么得到请求数据的呢?
如果你们做过尝试,一定会发现此时$_POST是空的,我们要使用php://input进行数据获取,示例:
$postData = file_get_contents('php://input');
PHP cURL是一个很强大的采集工具,curl_setopt里面还有很多参数,读者可以抽空整体看一遍,虽然平时未必用得上,但是至少做到心里有底,知道都有哪些参数,必要时还能找出来使用。
采集是一项大工程,使用过程中遇到的问题还会不少,但是只要学会分析和资料搜索,一切都会迎刃而解的,大家加油!哈哈~~
文章首发自Zjmainstay学习笔记《》
阅读(...) 评论()

我要回帖

更多关于 云解析有必要买吗 的文章

 

随机推荐