您的位置:

php网页curl,php网页设计作业

本文目录一览:

php curl选项列表(超详细)

本篇文章是对php中的curl选项列表进行了详细的分析介绍 需要的朋友参考下  

第一类 对于下面的这些option的可选参数 value应该被设置一个bool类型的值 选项 可选value值 备注 CURLOPT_AUTOREFERER 当根据Location:重定向时 自动设置header中的Referer:信息 CURLOPT_BINARYTRANSFER 在启用CURLOPT_RETURNTRANSFER的时候 返回原生的(Raw)输出 CURLOPT_COOKIESESSION 启用时curl会仅仅传递一个session cookie 忽略其他的cookie 默认状况下cURL会将所有的cookie返回给服务端 session cookie是指那些用来判断服务器端的session是否有效而存在的cookie CURLOPT_CRLF 启用时将Unix的换行符转换成回车换行符 CURLOPT_DNS_USE_GLOBAL_CACHE 启用时会启用一个全局的DNS缓存 此项为线程安全的 并且默认启用 CURLOPT_FAILONERROR 显示HTTP状态码 默认行为是忽略编号小于等于 的HTTP信息 CURLOPT_FILETIME 启用时会尝试修改远程文档中的信息 结果信息会通过 curl_getinfo()函数的CURLINFO_FILETIME选项返回 curl_getinfo() CURLOPT_FOLLOWLOCATION 启用时会将服务器服务器返回的"Location: "放在header中递归的返回给服务器 使用CURLOPT_MAXREDIRS可以限定递归返回的数量 CURLOPT_FORBID_REUSE 在完成交互以后强迫断开连接 不能重用 CURLOPT_FRESH_CONNECT 强制获取一个新的连接 替代缓存中的连接 CURLOPT_FTP_USE_EPRT 启用时当FTP下载时 使用EPRT (或 LPRT)命令 设置为FALSE时禁用EPRT和LPRT 使用PORT命令 only CURLOPT_FTP_USE_EPSV 启用时 在FTP传输过程中回复到PASV模式前首先尝试EPSV命令 设置为FALSE时禁用EPSV命令 CURLOPT_FTPAPPEND 启用时追加写入文件而不是覆盖它 CURLOPT_FTPASCII CURLOPT_TRANSFERTEXT的别名 CURLOPT_FTPLISTONLY 启用时只列出FTP目录的名字 CURLOPT_HEADER 启用时会将头文件的信息作为数据流输出 CURLINFO_HEADER_OUT 启用时追踪句柄的请求字符串 从 PHP 开始可用 CURLINFO_前缀是故意的(intentional) CURLOPT_HTTPGET 启用时会设置HTTP的method为GET 因为GET是默认是 所以只在被修改的情况下使用 CURLOPT_HTTPPROXYTUNNEL 启用时会通过HTTP代理来传输 CURLOPT_MUTE 启用时将cURL函数中所有修改过的参数恢复默认值 CURLOPT_NETRC 在连接建立以后 访问~/ netrc文件获取用户名和密码信息连接远程站点 CURLOPT_NOBODY 启用时将不对HTML中的BODY部分进行输出 CURLOPT_NOPROGRESS 启用时关闭curl传输的进度条 此项的默认设置为启用 Note: PHP自动地设置这个选项为TRUE 这个选项仅仅应当在以调试为目的时被改变 CURLOPT_NOSIGNAL 启用时忽略所有的curl传递给php进行的信号 在SAPI多线程传输时此项被默认启用 cURL 时被加入 CURLOPT_POST 启用时会发送一个常规的POST请求 类型为 application/x form urlencoded 就像表单提交的一样 CURLOPT_PUT 启用时允许HTTP发送文件 必须同时设置CURLOPT_INFILE和CURLOPT_INFILESIZE CURLOPT_RETURNTRANSFER 将 curl_exec()获取的信息以文件流的形式返回 而不是直接输出 CURLOPT_SSL_VERIFYPEER 禁 用后cURL将终止从服务端进行验证 使用CURLOPT_CAINFO选项设置证书使用CURLOPT_CAPATH选项设置证书目录 如果CURLOPT_SSL_VERIFYPEER(默认值为 )被启用 CURLOPT_SSL_VERIFYHOST需要被设置成TRUE否则设置为 FALSE 自cURL 开始默认为TRUE 从cURL 开始默认绑定安装 CURLOPT_TRANSFERTEXT 启用后对FTP传输使用ASCII模式 对于LDAP 它检索纯文本信息而非HTML 在Windows系统上 系统不会把STDOUT设置成binary模式 CURLOPT_UNRESTRICTED_AUTH 在使用CURLOPT_FOLLOWLOCATION产生的header中的多个locations中持续追加用户名和密码信息 即使域名已发生改变 CURLOPT_UPLOAD 启用后允许文件上传 CURLOPT_VERBOSE 启用时会汇报所有的信息 存放在STDERR或指定的CURLOPT_STDERR中 第二类 对于下面的这些option的可选参数 value应该被设置一个integer类型的值 选项 可选value值 备注 CURLOPT_BUFFERSIZE 每次获取的数据中读入缓存的大小 但是不保证这个值每次都会被填满 在cURL 中被加入 CURLOPT_CLOSEPOLICY 不是CURLCLOSEPOLICY_LEAST_RECENTLY_USED就是CURLCLOSEPOLICY_OLDEST 还存在另外三个CURLCLOSEPOLICY_ 但是cURL暂时还不支持 CURLOPT_CONNECTTIMEOUT 在发起连接前等待的时间 如果设置为 则无限等待 CURLOPT_CONNECTTIMEOUT_MS 尝试连接等待的时间 以毫秒为单位 如果设置为 则无限等待 在cURL 中被加入 从PHP 开始可用 CURLOPT_DNS_CACHE_TIMEOUT 设置在内存中保存DNS信息的时间 默认为 秒 CURLOPT_FTPSSLAUTH FTP验证方式 CURLFTPAUTH_SSL (首先尝试SSL) CURLFTPAUTH_TLS (首先尝试TLS)或CURLFTPAUTH_DEFAULT (让cURL自动决定) 在cURL 中被加入 CURLOPT_HTTP_VERSION CURL_HTTP_VERSION_NONE (默认值 让cURL自己判断使用哪个版本) CURL_HTTP_VERSION_ _ (强制使用 HTTP/ )或CURL_HTTP_VERSION_ _ (强制使用 HTTP/ ) CURLOPT_HTTPAUTH 使用的HTTP验证方法 可选的值有 CURLAUTH_BASIC CURLAUTH_DIGEST CURLAUTH_GSSNEGOTIATE CURLAUTH_NTLM CURLAUTH_ANY和CURLAUTH_ANYSAFE 可以使用|位域(或)操作符分隔多个值 cURL让服务器选择一个支持最好的值 CURLAUTH_ANY等价于CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM CURLAUTH_ANYSAFE等价于CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM CURLOPT_INFILESIZE 设定上传文件的大小限制 字节(byte)为单位 CURLOPT_LOW_SPEED_LIMIT 当传输速度小于CURLOPT_LOW_SPEED_LIMIT时(bytes/sec) PHP会根据CURLOPT_LOW_SPEED_TIME来判断是否因太慢而取消传输 CURLOPT_LOW_SPEED_TIME 当传输速度小于CURLOPT_LOW_SPEED_LIMIT时(bytes/sec) PHP会根据CURLOPT_LOW_SPEED_TIME来判断是否因太慢而取消传输 CURLOPT_MAXCONNECTS 允许的最大连接数量 超过是会通过CURLOPT_CLOSEPOLICY决定应该停止哪些连接 CURLOPT_MAXREDIRS 指定最多的HTTP重定向的数量 这个选项是和CURLOPT_FOLLOWLOCATION一起使用的 CURLOPT_PORT 用来指定连接端口 (可选项) CURLOPT_PROTOCOLS CURLPROTO_* 的位域指 如果被启用 位域值会限定libcurl在传输过程中有哪些可使用的协议 这将允许你在编译libcurl时支持众多协议 但是限制只是用它们 中被允许使用的一个子集 默认libcurl将会使用全部它支持的协议 参见CURLOPT_REDIR_PROTOCOLS 可用的协议选项 为 CURLPROTO_HTTP CURLPROTO_HTTPS CURLPROTO_FTP CURLPROTO_FTPS CURLPROTO_SCP CURLPROTO_SFTP CURLPROTO_TELNET CURLPROTO_LDAP CURLPROTO_LDAPS CURLPROTO_DICT CURLPROTO_FILE CURLPROTO_TFTP CURLPROTO_ALL 在cURL 中被加入 CURLOPT_PROXYAUTH HTTP代理连接的验证方式 使用在CURLOPT_HTTPAUTH中的位域标志来设置相应选项 对于代理验证只有CURLAUTH_BASIC和CURLAUTH_NTLM当前被支持 在cURL 中被加入 CURLOPT_PROXYPORT 代理服务器的端口 端口也可以在CURLOPT_PROXY中进行设置 CURLOPT_PROXYTYPE 不是CURLPROXY_HTTP (默认值) 就是CURLPROXY_SOCKS 在cURL 中被加入 CURLOPT_REDIR_PROTOCOLS CURLPROTO_* 中的位域值 如果被启用 位域值将会限制传输线程在CURLOPT_FOLLOWLOCATION开启时跟随某个重定向时可使用的协议 这将使你对重定向 时限制传输线程使用被允许的协议子集默认libcurl将会允许除FILE和SCP之外的全部协议 这个和 预发布版本种无条件地跟随所有支持 的协议有一些不同 关于协议常量 请参照CURLOPT_PROTOCOLS 在cURL 中被加入 CURLOPT_RESUME_FROM 在恢复传输时传递一个字节偏移量(用来断点续传) CURLOPT_SSL_VERIFYHOST 检查服务器SSL证书中是否存在一个公用名(mon name) 译者注 公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain) 检查公用名是否存在 并且是否与提供的主机名匹配 CURLOPT_SSLVERSION 使用的SSL版本( 或 ) 默认情况下PHP会自己检测这个值 尽管有些情况下需要手动地进行设置 CURLOPT_TIMECONDITION 如 果在CURLOPT_TIMEVALUE指定的某个时间以后被编辑过 则使用CURL_TIMECOND_IFMODSINCE返回页面 如果没有被修改 过 并且CURLOPT_HEADER为true 则返回一个" Not Modified"的header CURLOPT_HEADER为false 则使用CURL_TIMECOND_IFUNMODSINCE 默认值为 CURL_TIMECOND_IFUNMODSINCE CURLOPT_TIMEOUT 设置cURL允许执行的最长秒数 CURLOPT_TIMEOUT_MS 设置cURL允许执行的最长毫秒数 在cURL 中被加入 从PHP 起可使用 CURLOPT_TIMEVALUE 设置一个CURLOPT_TIMECONDITION使用的时间戳 在默认状态下使用的是CURL_TIMECOND_IFMODSINCE 第三类 对于下面的这些option的可选参数 value应该被设置一个string类型的值 选项 可选value值 备注 CURLOPT_CAINFO 一个保存著 个或多个用来让服务端验证的证书的文件名 这个参数仅仅在和CURLOPT_SSL_VERIFYPEER一起使用时才有意义 CURLOPT_CAPATH 一个保存著多个CA证书的目录 这个选项是和CURLOPT_SSL_VERIFYPEER一起使用的 CURLOPT_COOKIE 设定HTTP请求中"Cookie: "部分的内容 多个cookie用分号分隔 分号后带一个空格(例如 "fruit=apple; colour=red") CURLOPT_COOKIEFILE 包含cookie数据的文件名 cookie文件的格式可以是Netscape格式 或者只是纯HTTP头部信息存入文件 CURLOPT_COOKIEJAR 连接结束后保存cookie信息的文件 CURLOPT_CUSTOMREQUEST 使 用一个自定义的请求信息来代替"GET"或"HEAD"作为HTTP请求 这对于执行"DELETE" 或者其他更隐蔽的HTTP请求 有效值如"GET" "POST" "CONNECT"等等 也就是说 不要在这里输入整个HTTP请求 例如输 入"GET /index HTTP/ rnrn"是不正确的 Note: 在确定服务器支持这个自定义请求的方法前不要使用 CURLOPT_EGDSOCKET 类似CURLOPT_RANDOM_FILE 除了一个Entropy Gathering Daemon套接字 CURLOPT_ENCODING HTTP请求头中"Accept Encoding: "的值 支持的编码有"identity" "deflate"和"gzip" 如果为空字符串"" 请求头会发送所有支持的编码类型 在cURL 中被加入 CURLOPT_FTPPORT 这个值将被用来获取供FTP"POST"指令所需要的IP地址 "POST"指令告诉远程服务器连接到我们指定的IP地址 这个字符串可以是纯文本的IP地址 主机名 一个网络接口名(UNIX下)或者只是一个 来使用默认的IP地址 CURLOPT_INTERFACE 网络发送接口名 可以是一个接口名 IP地址或者是一个主机名 CURLOPT_KRB LEVEL KRB (Kerberos ) 安全级别 下面的任何值都是有效的(从低到高的顺序) "clear" "safe" "confidential" "private" 如果字符串 和这些都不匹配 将使用"private" 这个选项设置为NULL时将禁用KRB 安全认证 目前KRB 安全认证只能用于FTP传输 CURLOPT_POSTFIELDS 全 部数据使用HTTP协议中的"POST"操作来发送 要发送文件 在文件名前面加上@前缀并使用完整路径 这个参数可以通过urlencoded后的字符 串类似 para =val ¶ =val 或使用一个以字段名为键值 字段数据为值的数组 如果value是一个数 组 Content Type头将会被设置成multipart/form data CURLOPT_PROXY HTTP代理通道 CURLOPT_PROXYUSERPWD 一个用来连接到代理的"[username]:[password]"格式的字符串 CURLOPT_RANDOM_FILE 一个被用来生成SSL随机数种子的文件名 CURLOPT_RANGE 以"X Y"的形式 其中X和Y都是可选项获取数据的范围 以字节计 HTTP传输线程也支持几个这样的重复项中间用逗号分隔如"X Y N M" CURLOPT_REFERER 在HTTP请求头中"Referer: "的内容 CURLOPT_SSL_CIPHER_LIST 一个SSL的加密算法列表 例如RC SHA和TLSv 都是可用的加密列表 CURLOPT_SSLCERT 一个包含PEM格式证书的文件名 CURLOPT_SSLCERTPASSWD 使用CURLOPT_SSLCERT证书需要的密码 CURLOPT_SSLCERTTYPE 证书的类型 支持的格式有"PEM" (默认值) "DER"和"ENG" 在cURL 中被加入 CURLOPT_SSLENGINE 用来在CURLOPT_SSLKEY中指定的SSL私钥的加密引擎变量 CURLOPT_SSLENGINE_DEFAULT 用来做非对称加密操作的变量 CURLOPT_SSLKEY 包含SSL私钥的文件名 CURLOPT_SSLKEYPASSWD 在CURLOPT_SSLKEY中指定了的SSL私钥的密码 Note: 由于这个选项包含了敏感的密码信息 记得保证这个PHP脚本的安全 CURLOPT_SSLKEYTYPE CURLOPT_SSLKEY中规定的私钥的加密类型 支持的密钥类型为"PEM"(默认值) "DER"和"ENG" CURLOPT_URL 需要获取的URL地址 也可以在 curl_init()函数中设置 CURLOPT_USERAGENT 在HTTP请求中包含一个"User Agent: "头的字符串 CURLOPT_USERPWD 传递一个连接中需要的用户名和密码 格式为 "[username]:[password]" 第四类 对于下面的这些option的可选参数 value应该被设置一个数组 选项 可选value值 备注 CURLOPT_HTTP ALIASES 响应码数组 数组中的响应吗被认为是正确的响应 否则被认为是错误的 在cURL 中被加入 CURLOPT_HTTPHEADER 一个用来设置HTTP头字段的数组 使用如下的形式的数组进行设置 array( Content type: text/plain Content length: ) CURLOPT_POSTQUOTE 在FTP请求执行完成后 在服务器上执行的一组FTP命令 CURLOPT_QUOTE 一组先于FTP请求的在服务器上执行的FTP命令

lishixinzhi/Article/program/PHP/201311/21090

PHP_CURL使用详解

CURL是PHP的一个扩展,利用该扩展可以实现服务器之间的数据或文件传输,用来采集网络中的html网页文件、其他服务器提供接口数据等。

GET请求

POST请求

使用PHP的cURL库进行网页抓取

使用PHP的cURL库可以简单和有效地去抓网页 你只需要运行一个脚本 然后分析一下你所抓取的网页 然后就可以以程序的方式得到你想要的数据了 无论是你想从从一个链接上取部分数据 或是取一个XML文件并把其导入数据库 那怕就是简单的获取网页内容 cURL 是一个功能强大的PHP库 本文主要讲述如果使用这个PHP库

启用 cURL 设置

首先 我们得先要确定我们的PHP是否开启了这个库 你可以通过使用php_info()函数来得到这一信息

﹤?phpphpinfo();?﹥

如果你可以在网页上看到下面的输出 那么表示cURL库已被开启

如果你看到的话 那么你需要设置你的PHP并开启这个库 如果你是在Windows平台下 那么非常简单 你需要改一改你的php ini文件的设置 找到php_curl dll 并取消前面的分号注释就行了 如下所示

//取消下在的注释extension=php_curl dll

如果你是在Linux下面 那么 你需要重新编译你的PHP了 编辑时 你需要打开编译参数——在configure命令上加上 –with curl 参数

一个小示例

如果一切就绪 下面是一个小例程

﹤?php// 初始化一个 cURL 对象$curl = curl_init();

// 设置你需要抓取的URLcurl_setopt($curl CURLOPT_URL //cocre );

// 设置headercurl_setopt($curl CURLOPT_HEADER );

// 设置cURL 参数 要求结果保存到字符串中还是输出到屏幕上 curl_setopt($curl CURLOPT_RETURNTRANSFER );

// 运行cURL 请求网页$data = curl_exec($curl);

// 关闭URL请求curl_close($curl);

// 显示获得的数据var_dump($data);

  如何POST数据

上面是抓取网页的代码 下面则是向某个网页POST数据 假设我们有一个处理表单的网址// example /sendSMS php 其可以接受两个表单域 一个是电话号码 一个是短信内容

﹤?php$phoneNumber = ;$message = This message was generated by curl and php ;$curlPost = pNUMBER= urlencode($phoneNumber) MESSAGE= urlencode($message) SUBMIT=Send ;$ch = curl_init();curl_setopt($ch CURLOPT_URL // example /sendSMS php );curl_setopt($ch CURLOPT_HEADER );curl_setopt($ch CURLOPT_RETURNTRANSFER );curl_setopt($ch CURLOPT_POST );curl_setopt($ch CURLOPT_POSTFIELDS $curlPost);$data = curl_exec();curl_close($ch);?﹥

从上面的程序我们可以看到 使用CURLOPT_POST设置HTTP协议的POST方法 而不是GET方法 然后以CURLOPT_POSTFIELDS设置POST的数据

   关于代理服务器

下面是一个如何使用代理服务器的示例 请注意其中高亮的代码 代码很简单 我就不用多说了

﹤?php $ch = curl_init();curl_setopt($ch CURLOPT_URL // example );curl_setopt($ch CURLOPT_HEADER );curl_setopt($ch CURLOPT_RETURNTRANSFER );curl_setopt($ch CURLOPT_HTTPPROXYTUNNEL );curl_setopt($ch CURLOPT_PROXY fakeproxy : );curl_setopt($ch CURLOPT_PROXYUSERPWD user:password );$data = curl_exec();curl_close($ch);?﹥ 关于SSL和Cookie

关于SSL也就是HTTPS协议 你只需要把CURLOPT_URL连接中的//变成//就可以了 当然 还有一个参数叫CURLOPT_SSL_VERIFYHOST可以设置为验证站点

关于Cookie 你需要了解下面三个参数

CURLOPT_COOKIE 在当面的会话中设置一个cookie

CURLOPT_COOKIEJAR 当会话结束的时候保存一个Cookie

CURLOPT_COOKIEFILE Cookie的文件

HTTP服务器认证

最后 我们来看一看HTTP服务器认证的情况

﹤?php $ch = curl_init();curl_setopt($ch CURLOPT_URL // example );curl_setopt($ch CURLOPT_RETURNTRANSFER );curl_setopt($ch CURLOPT_HTTPAUTH CURLAUTH_BASIC);curl_setopt(CURLOPT_USERPWD [username]:[password] )

$data = curl_exec();curl_close($ch);?﹥

关于其它更多的内容 请参看相关的cURL手册 lishixinzhi/Article/program/PHP/201311/21491