加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP的CURLOPT_POSTFIELDS参数使用数组和字符串的差异

发布时间:2022-07-05 16:38:09 所属栏目:PHP教程 来源:互联网
导读:PHP的CURL组件是非常常用的HTTP请求模拟器。 通常要发送post数据时,我已经习惯于这样写: curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data); 但是在向某一个服务器发送请求的时候,服务器返回500,而使用socket方式连接上去发送请求,返回正常的数据. 尝试发送到
  PHP的CURL组件是非常常用的HTTP请求模拟器。
 
  通常要发送post数据时,我已经习惯于这样写:
 
  curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
 
  但是在向某一个服务器发送请求的时候,服务器返回500,而使用socket方式连接上去发送请求,返回正常的数据.
 
  尝试发送到一个仅有<?php print_r($_SERVER);?>的网页上,可以看到使用数组发送POST数据时,收到的CONTENT_TYPE如下:
 
  [CONTENT_TYPE] => multipart/form-data; boundary=—————————-f924413ea122
 
  而使用http_build_query($post_data),收到的CONTENT_TYPE如下:
 
  [CONTENT_TYPE] => application/x-www-form-urlencoded
 
  可见,当CURLOPT_POSTFIELDS被设置为数组时,HTTP头会发送Content_type: application/x-www-form-urlencoded,这个是正常的网页<form>提交表单时,浏览器发送的头部,而multipart/form-data我们知道这是用于上传文件的表单,包括了boundary分界符,会多出很多字节.
 
  • CURLOPT_HEADER:如果你想把一个头包含在输出中,设置这个选项为一个非零值.
 
  • CURLOPT_NOPROGRESS: 如果你不会PHP为CURL传输显示一个进程条,设置这个选项为一个非零值,注意:PHP自动设置这个选项为非零值,你应该仅仅为了调试的目的来改变这个选项。
 
  • CURLOPT_NOBODY:如果你不想在输出中包含body部分,设置这个选项为一个非零值。
 
  • CURLOPT_FAILONERROR:如果你想让PHP在发生错误(HTTP代码返回大于等于300)时,不显示,设置这个选项为一人非零值。默认行为是返回一个正常页,忽略代码。
 
  • CURLOPT_UPLOAD:如果你想让PHP为上传做准备,设置这个选项为一个非零值。
 
  • CURLOPT_POST:如果你想PHP去做一个正规的HTTP POST,设置这个选项为一个非零值。这个POST是普通的 application/x-www-from-urlencoded 类型,多数被HTML表单使用。
 
  • CURLOPT_FTPLISTONLY:设置这个选项为非零值,PHP将列出FTP的目录名列表。
 
  • CURLOPT_FTPAPPEND:设置这个选项为一个非零值,PHP将应用远程文件代替覆盖它。
 
  • CURLOPT_NETRC:设置这个选项为一个非零值,PHP将在你的 ~./netrc 文件中查找你要建立连接的远程站点的用户名及密码。
 
  • CURLOPT_FOLLOWLOCATION:设置这个选项为一个非零值(象 “Location: “)的头,服务器会把它当做HTTP头的一部分发送(注意这是递归的,PHP将发送形如 “Location: “的头)。
 
  • CURLOPT_TIMECONDITION:传递一个长参数,指定怎么处理CURLOPT_TIMEVALUE参数。你可以设置这个参数为TIMECOND_IFMODSINCE 或 TIMECOND_ISUNMODSINCE。这仅用于HTTP。
 
  • CURLOPT_TIMEVALUE:传递一个从1970-1-1开始到现在的秒数。这个时间将被CURLOPT_TIMEVALUE选项作为指定值使用,或被默认TIMECOND_IFMODSINCE使用。
 
  下列选项的值将被作为字符串:
 
  • CURLOPT_URL:这是你想用PHP取回的URL地址,你也可以在用curl_init()函数初始化时设置这个选项。
 
  • CURLOPT_USERPWD:传递一个形如[username]:[password]风格的字符串,作用PHP去连接。
 
  • CURLOPT_PROXYUSERPWD:传递一个形如[username]:[password] 格式的字符串去连接HTTP代理。
 
  • CURLOPT_RANGE:传递一个你想指定的范围。它应该是”X-Y”格式,X或Y是被除外的。HTTP传送同样支持几个间隔,用逗句来分隔(X-Y,N-M)。
 
  • CURLOPT_POSTFIELDS:传递一个作为HTTP “POST”操作的所有数据的字符串。
 
  • CURLOPT_SSLCERTPASSWD:传递一个包含使用CURLOPT_SSLCERT证书必需的密码。
 
  • CURLOPT_COOKIEFILE:传递一个包含cookie数据的文件的名字的字符串。这个cookie文件可以是Netscape格式,或是堆存在文件中的HTTP风格的头。
 
  • CURLOPT_CUSTOMREQUEST:当进行HTTP请求时,传递一个字符被GET或HEAD使用。为进行DELETE或其它操作是有益的,更Pass a string to be used instead of GET or HEAD when doing an HTTP request. This is useful for doing or another, more obscure, HTTP request. 注意: 在确认你的服务器支持命令先不要去这样做。下列的选项要求一个文件描述(通过使用fopen()函数获得):
 
  • CURLOPT_FILE:这个文件将是你放置传送的输出文件,默认是STDOUT.
 
  • CURLOPT_INFILE:这个文件是你传送过来的输入文件。
 
  • CURLOPT_WRITEHEADER:这个文件写有你输出的头部分。
 
  • CURLOPT_STDERR:这个文件写有错误而不是stderr,用来获取需要登录的页面的例子,当前做法是每次或许都登录一次,有需要的人再做改进了

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读