php怎么判断http,PHP用1个函数实现post请求?
引言
前天的文章,我们说到了如何高效的下载网络资源,对于小体积的文件。可以便捷的使用 file_put_contents() 进行请求。与之配对的函数 file_get_contents() 则是读取资源。
今天我们讨论一下,有没有一种可能,使用一个函数,就可以给服务器发送post请求的数据呢?
学习时间上一段中我们已经提示了,有一个函数可以用于读取网络资源,也就是间接的发起网络请求。默认 file_get_contents()是使用 GET 请求,如果是POST请求按道理也应该做的来。不过要怎么写呢?
file_get_contents() 函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。
其参数形式如下:
string file_get_contents( string $filename[, bool $use_include_path = false[, resource $context[, int $offset = -1[, int $maxlen]]]] )
复杂的功能,我们需要组装后面的参数即可。我们需要使用流操作的上下文 context,传入该函数。
首先构造请求的参数,也就是键值对,这里需要使用 & 进行多参数连接:
$postdata = http_build_query( array( 'name' => 'joe', 'age' => '13' ) );
接着构造请求结构体:
$opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-Type: application/x-www-form-urlencoded', 'content' => $postdata ) );
最重要的一步,创建基于流的上下文,使用
$context = stream_context_create($opts);
写到这里就“万事俱备只欠东风”了。我们隆重地清楚主旨函数处理这些参数:
$result = file_get_contents('http://example.com/submit.php', false, $context);
之后结果,或者错误内容,就会输出到 $result 对象。使用 false 判断,或者使用已知的接口返回数据类型,进一步处理。
深度定制上一节的内容并没有考虑网络超时,接口授权,等等情形。本节我们说一个复杂度高一些的,要求处理一个https请求,并配置了 basic auth 的 url,并使用 post 上传数据。
首先还是裁剪请求体:
$opts = array('http' => array( 'method' => 'POST', 'header' => "Content-Type: text/xml\r\n.Authorization: Basic ".base64_encode("$https_user:$https_password")."\r\n", 'content' => $body, 'timeout' => 60 ) );
注意我们在请求上添加了 header,这是根据目标 url 的要求添加的。$body 就是上一节中的 $postdata 结构类型。
接着创建流上下文:
$context = stream_context_create($opts);
最后调用函数:
$url = 'https://'.$https_server;
$result = file_get_contents($url, false, $context, -1, 40000);
写在最后通过上面两个细节的函数处理,大家是不是对 file_get_contents() 有了更加深入的看法,原来这家伙还可以这么用,真是开了眼界!
Happy coding :_)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注。
哪个互联网招聘网站靠谱?
说实在的,网站多数靠谱,一般不靠谱的是第三方,而且不是说招聘网站越大,越有名气,就越好。
每个招聘网站的行业专注方向与深度不一样,所以好不好还得看适不适合自己,下面给大家说一下几大类招聘网站:
综合类前程无忧前程无忧在国内创立了网站+猎头+RPO+校园招聘+管理软件的招聘方案,致力于帮助企业管理人力资源,节约成本。现在全国25个城市设有服务机构,注册用户超过一亿,是国内专业人力资源服务机构。
除此之外,智联招聘、中华英才网、大街网、应届生求职网等等都属于综合类,提到的这几个也都是较为出名的招聘网站。
地方类说到地方类招聘网站,较为出名的当属58同城,但要注意58同城是一个生活服务平台,招聘只是一个业务,所以业务覆盖包含房产、汽车、二手、本地生活服务及金融等各个领域。
在全国范围内共设立30余家分公司,并在500余个城市建立网络平台,尽显58同城本地化、覆盖广、更专业的商业优势,获得更多客户和用户地认可,活跃本地商户数量超1000万,大公司就值得信任,合作商也多,选择更多。
除此之外,地方类招聘网站其实在每个地方都有,比如广东招聘网,湖南人才网等等各种以省市命名的招聘网站,比比皆是。
行业垂直类数字营销及广告顾名思义就是专注于数字营销的招聘网站,名气比较大的有独角招聘、数英网招聘等。
互联网行业这一类首推拉勾网,PMCAFF社区产品招聘,另外一大网站为boss直聘,但是口碑向来不是很好,但是boss直聘优势在于能够直接会聊,这几家都是更多地专注于互联网IT行业招聘的。
产品经理这一类主要有秒聘网、产品经理社区等。
事实上,每个行业都有类似上面的垂直类招聘网站的,其中包括但不限于兼职类、远程工作类、自由职业类等,比如建筑类的建筑英才网、事业单位的全国事业单位招聘网。
最后提一下,一般来说大中型企业都有自己的官网,以及官网使用的招聘管理系统,所以说,如果想要进某些如同阿里、腾讯、字节等这样的大公司大企业,最好还是通过官网招聘页面进行投递,如果有内部推荐也要记得利用好,当然打铁还需自身硬,了解网站是第一步,提升自己才是关键,希望这个回答能帮到大家。
感谢大家的阅读,我是@饭后余谈 ,每日为大家带来最新热议,最新数据,职场故事与经验,不一样的内容但一样的有趣,欢迎大家的关注与讨论。
php如何实现真正的全局变量?
首先明确一点 php的全局变量可以分为
1.自定义的全局变量
通过关键字 global 声明变量为全局变量
$a =1;function bb(){ global $a;}
2.系统自带的全局变量
php系统自带的全局变量也有很多 ,也是可以去使用的,例如:
$_SERVER (主要存储http 请求相关的信息)$_REQUEST (默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组)$_POST (主要是http POST 请求的参数)$_GET (主要是http GET 请求的参数)$_FILES (主要是http 文件相关的参数)$_ENV (是一个包含服务器端环境变量的数组)$_COOKIE (主要是存储浏览器临时缓存的信息)$_SESSION (主要是php 服务 会话存储信息)PHP和Nodejs哪个更好用?
这个不大好比。
首先,他们不是同一类东西。就目前而言,PHP除了做网站外,其他用得不多,毕竟他是为做网页而生的。一般地,node.js是一个js运行环境,通常人们拿它来做http server,对于某些情况,性能几乎是当前http server中最好的,但毕竟作为http server还比较年轻,对一些应用情景还不是特别有效。但node不仅仅做网站,由于他是一个js运行环境,基本可以做独立语言的事情,只要你愿意,几乎可以做你想做的。
其次,就http server而言,两个的设计理念也不同。PHP是依附在其它http server上的开发语言,对学习、使用者而言,除了了解PHP语言本身,还要对你的http server有一定了解,不同server的api各不相同,对要求“精通”编程的程序员来说,并不是一件很简单的事情。node本身是一个js运行环境,用其提供的内置api你能“写”一个非常简单的http server,要做“全功能”http server,有很多的模块及方案,例如express,但总的来说都是node内部的事情,同宗同族。
再次,从web开发角度看,纯服务器端渲染会越来越少。主要是现在终端的性能比较强,浏览器纯从服务器获取HTML显示比较浪费客服端性能,同时又极大增加服务器端负荷,所以在两端适当调整负荷是必然,随着客服端框架的发展,spa应用会越来越多,这有利负荷分担,流量减少,反应速度提高。就算不是spa,(b/c)——s之间的数据都更多地以json/xml进行交互而减少html,本质就是减少服务器端渲染,server更多担负数据中心的角色。对于这种逐步演进的应用,node就比PHP有优势:你可以把代码逐步地从s端向c端转移,直到自己认为合适,包括服务器负载,客户端体验……;而PHP暂时还不行。
最后,node是JavaScript绑定的语言环境,可以看做是一门独立的语言,不但可以做server,还可以做工具,做client,例如nw绑定,electron绑定等,这样你可以有更大的灵活性。
当然,萝卜白菜,做自己喜欢的事情还是最重要的,人家合适的不一定你合适,找到合适的就好。
javascript的区别和联系?
[ XML ]
使用XML作为传输格式的优势:
1. 格式统一, 符合标准
2. 容易与其他系统进行远程交互, 数据共享比较方便
缺点:
1. XML文件格式文件庞大, 格式复杂, 传输占用带宽
2. 服务器端和客户端都需要花费大量代码来解析XML, 不论服务器端和客户端代码变的异常复杂和不容易维护
3. 客户端不同浏览器之间解析XML的方式不一致, 需要重复编写很多代码
4. 服务器端和客户端解析XML花费资源和时间
[ JSON ]
那么除了XML格式, 还有没有其他格式, 有一种叫做JSON (JavaScript Object Notation) 的轻量级数据交换格式能够替代XML的工作.
优点:
1. 数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小
2. 易于解析这种语言, 客户端JavaScript可以简单的通过eval()进行JSON数据的读取
3. 支持多种语言, 包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等语言服务器端语言, 便于服务器端的解析
4. 在PHP世界, 已经有PHP-JSON和JSON-PHP出现了, 便于PHP序列化后的程序直接调用. PHP服务器端的对象、数组等能够直接生JSON格式, 便于客户端的访问提取.
另外PHP的PEAR类已经提出了支持 (http://pear.php.net/pepr/pepr-proposal-show.php?id=198)
5. 因为JSON格式能够直接为服务器端代码使用, 大大简化了服务器端和客户端的代码开发量, 但是完成的任务不变, 且易于维护
缺点:
1. 没有XML格式这么推广的深入人心和使用广泛, 没有XML那么通用性
2. JSON格式目前在Web Service中推广还属于初级阶段