php 手机归属地查询函数详解
代码如下 | 复制代码 |
echo get_area('13000000000'); |
归属地数据文件下载:mob.dat
http://l4.yunpan.cn/lk/QvYCBFP6TVBjy
下面小编来给各位同学介绍几个遍历目录的方法,这里可以遍历目录及目录及其它中的文件了,如果你对此有兴趣不防进入参考。遍历目录或遍历目录下指定类型的文件,这是每一个童鞋在写程序的时候难免会用到的。PHP本身也提供了很多灰常有用的函数,正确地使用它们,不会有错滴。
下面就我个人学习过程中的一些总结,希望对想学PHP的童鞋有所帮助。
//本函数可以列出指定目录下所有的文件(包括子目录下的)
代码如下 | 复制代码 |
function getfiles($path){ if($afile=='.'||$afile=='..') continue; getfiles(__DIR__); |
scandir() 是返回指定目录下所有的文件和目录组成的数组,在PHP中,还提供了一个灰常强大的函数glob(),glob()有2个参数,至于第2个参数是可选的,稍后再讲。 直接来看,用glob()怎么遍历目录的。
//
//可以看出,glob()返回的内容中已经过滤掉了'.'和'..',其中*表示遍历目录下所有文件。相应的,如果改为*.txt,则会遍历目录下所的txt文件。是不是很方便呢?它的方便之处可不止这一点,据元芳说,这里面还藏着一个天大的秘密,是什么呢?以后再说,有兴趣的话,可以给我留言交流。
代码如下 | 复制代码 |
function getfiles($path){ |
既然说用 *.txt,就会遍历目录下所的txt文件,那如果我想让它同时遍历某几种格式的文件呢?怎么办?肯定有童鞋想到用数组了,然后很快的写出来替换进去{*.txt,*.jpg,*.zip,...},当然也很快地发现,程序返回false,什么都得不到。不要失望,这涉及到了刚才所说的第2个可选参数,这个参数是用来改变glob的行为的,具体都有些什么,可以查阅PHP手册,这里不多讲,只说一个GLOB_BRACE,这是用来扩充 {a,b,c,...} 来匹配 'a','b' 或 'c',...的。用法如下:foreach(glob($path.'/{*.txt,*.jpg,*.zip,...}', GLOB_BRACE) as $fileName){...}
至于完整的遍历目录下所有的指定文件类型函数,我们可以看下面实例
遍历文件夹及子文件夹所有文件
代码如下 | 复制代码 |
|
一些常用的实例
代码如下 | 复制代码 |
<?php |
用了这段代码遍历所有文件,帮我把所有文件名存为一个数组。
代码如下 | 复制代码 |
<?php <?php <?php print_r("<pre>"); |
我们以前常用mb_detect_encoding()此函数检测字符编码
代码如下 | 复制代码 |
//判断字符串是什么编码 if ($tag === mb_convert_encoding(mb_convert_encoding($tag, "GB2312", "UTF-8"), "UTF-8", "GB2312")) { } else {//如果是gb2312 的就转换为utf8的 $tag = mb_convert_encoding($tag, 'UTF-8', 'GB2312'); } |
$keytitle = “%D0%BE%C6%AC”;时。检测结果却是UTF-8.这个bug其实不算是bug,写程序时也不应当过于依赖mb_detect_encoding,当字符串较短时,检测结果产生偏差的可能性很大。
怎么解决呢,我的办法是:
代码如下 | 复制代码 |
$encode = mb_detect_encoding($keytitle, array('ASCII','GB2312′,'GBK','UTF-8'); |
个参数分别是:被检测的输入变量、编码方式的检测顺序(一旦为真,后面自动忽略)、strict模式
对编码检测的顺序进行调整,将最大可能性放在前面,这样减少被错误转换的机会。
上面办法还是解决不了,下面又找到了一个解决方法。
例1
代码如下 | 复制代码 |
// Returns true if $string is valid UTF-8 and false otherwise. |
下面我们就详细介绍一下 PHP 5.4 的这个 session.upload_progress 新特性。
原理介绍
当浏览器向服务器端上传一个文件时,PHP将会把此次文件上传的详细信息(如上传时间、上传进度等)存储在session当中。然后,随着上传的进行,周期性的更新session中的信息。这样,浏览器端就可以使用Ajax周期性的请求一个服务器端脚本,由该脚本返回session中的进度信息;浏览器端的Javascript即可根据这些信息显示/更新进度条了。
那么,文件上传信息具体是如何存储的?我们要如何访问它呢?下面我们来详细说明。
PHP 5.4 中引入了一些配置项(在php.ini中进行设置)
session.upload_progress.enabled = "1"
session.upload_progress.cleanup = "1"
session.upload_progress.prefix = "upload_progress_"
session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS"
session.upload_progress.freq = "1%"
session.upload_progress.min_freq = "1"
其中enabled控制upload_progress功能的开启与否,默认开启;cleanup 则设置当文件上传的请求提交完成后,是否清除session的相关信息,默认开启。
prefix 和 name 两项用来设置进度信息在session中存储的变量名/键名。关于这两项的详细使用见下文。
freq 和 min_freq 两项用来设置服务器端对进度信息的更新频率。合理的设置这两项可以减轻服务器的负担。
在上传文件的表单中,需要为该次上传设置一个标识符,并在接下来的过程中使用该标识符来引用进度信息。具体的,在上传表单中需要有一个隐藏的input,它的name属性为php.ini中 session.upload_progress.name 的值;它的值为一个由你自己定义的标识符。如下:
<input type="hidden"
name="<?php echo ini_get('session.upload_progress.name'); ?>"
value="test" />
接到文件上传的表单后,PHP会在$_SESSION变量中新建键,键名是一个将session.upload_progress.prefix的值与上面你自定义的标识符连接后得到的字符串,可以这样得到:
$name = ini_get('session.upload_progress.name');
$key = ini_get('session.upload_progress.prefix') . $_POST[$name];
$_SESSION[$key]; // 这里就是此次文件上传的进度信息了
$_SESSION[$key]这个变量的结构是这样的:
$_SESSION["upload_progress_test"] = array(
"start_time" => 1234567890, // 开始时间
"content_length" => 57343257, // POST请求的总数据长度
"bytes_processed" => 453489, // 已收到的数据长度
"done" => false, // 请求是否完成 true表示完成,false未完成
// 单个文件的信息
"files" => array(
0 => array( ... ),
// 同一请求中可包含多个文件
1 => array( ... ),
)
);这样,我们就可以使用其中的 content_length 和 bytes_processed 两项来得到进度百分比。
程序示例
原理介绍完了,下面我们来完整的实现一个基于PHP和Javascript的文件上传进度条。
本示例的代码仓库: Github: pureweber/samples/php-upload-progress
上传表单
首先,来编写我们的上传表单页面 index.php,代码如下:
<form id="upload-form"
action="upload.php" method="POST" enctype="multipart/form-data"
style="margin:15px 0" target="hidden_iframe">
<input type="hidden" name="" value="test" />
<p><input type="file" name="file1" /></p>
<p><input type="submit" value="Upload" /></p>
</form>
<iframe id="hidden_iframe" name="hidden_iframe" src="about:blank" style="display:none;"></iframe>
<div id="progress" class="progress" style="margin-bottom:15px;display:none;">
<div class="bar" style="width:0%;"></div>
<div class="label">0%</div>
</div>注意表单中的session.upload_progress.name隐藏项,值设置为了test。表单中仅有一个文件上传input,如果需要,你可以添加多个。
这里需要特别注意一下表单的target属性,这里设置指向了一个当前页面中的iframe。这一点很关键,通过设置target属性,让表单提交后的页面显示在iframe中,从而避免当前的页面跳转。因为我们还得在当前页面显示进度条呢。
#progress 这个div是用来显示进度条的。
注意 别忘了在index.php的最开始加上session_start()。
处理上传的文件
表单的action指向upload.php,我们在upload.php中处理上传的文件,将它转存到当前目录。这里与通常情况下的上传处理没有区别。
if(is_uploaded_file($_FILES['file1']['tmp_name'])){
move_uploaded_file($_FILES['file1']['tmp_name'], "./{$_FILES['file1']['name']}");
}
?>Ajax获取进度信息
这一步是关键,我们需要建立一个 progress.php 文件,用来读取session中的进度信息; 然后我们在 index.php 中增加Javascript代码,向 progress.php 发起Ajax请求,然后根据获得的进度信息更新进度条。
progress.php 的代码如下:
session_start();
$i = ini_get('session.upload_progress.name');
$key = ini_get("session.upload_progress.prefix") . $_GET[$i];
if (!empty($_SESSION[$key])) {
$current = $_SESSION[$key]["bytes_processed"];
$total = $_SESSION[$key]["content_length"];
echo $current < $total ? ceil($current / $total * 100) : 100;
}else{
echo 100;
}
?>在这里我们获得$_SESSION变量中的进度信息,然后输出一个进度百分比。
在 index.php 中,我们将如下代码添加到页面底部 (为简便,这里使用jQuery):
function fetch_progress(){
$.get('progress.php',{ '' : 'test'}, function(data){
var progress = parseInt(data);
$('#progress .label').html(progress + '%');
$('#progress .bar').css('width', progress + '%');
if(progress < 100){
setTimeout('fetch_progress()', 100);
}else{
$('#progress .label').html('完成!');
}
}, 'html');
}
$('#upload-form').submit(function(){
$('#progress').show();
setTimeout('fetch_progress()', 100);
});
当#upload-form被提交时,我们把进度条显示出来,然后反复调用 fetch_progress() 获得进度信息,并更新进度条,直到文件上传完毕,显示'完成!'。
Done!
完整代码见: Github: pureweber/samples/php-upload-progress
注意事项
input标签的位置
name为session.upload_progress.name的input标签一定要放在文件input <input type="file" /> 的前面。
取消上传
通过设置 $_SESSION[$key]['cancel_upload'] = true 可取消当次上传。但仅能取消正在上传的文件和尚未开始的文件。已经上传成功的文件不会被删除。
setTimeout vs. setInterval
应该通过 setTimeout() 来调用 fetch_progress(),这样可以确保一次请求返回之后才开始下一次请求。如果使用 setInterval() 则不能保证这一点,有可能导致进度条出现'不进反退'。
这几天工作有大量用curl,curl就是模拟浏览器来传输数据,他支持很多的协议HTPP,HTTPS,FTP….等等很多协议,在做采集和模拟用户来执行一些操作的时候非常有用的。
使用CURL主要是四个步骤:
1、初始化URL
2、设置请求的一些参数(COOKIE,HEAD…)
3、执行请求
4、关闭资源
先说一个简单的采集,一般在获取一个网页的内容的时候我们最方便就是使用file_get_contents()函数来获取,现在我们通过CURL来抓取一个网页的内容
代码如下 | 复制代码 |
$ch = curl_init();//初始化一个资源 |
注:重点在于curl_setopt()这个函数的第二个参数(下面会有一些常用的资料)
这样我们就可以得到这个网页的内容,如果只有CURL来做些这就大材小用了,CURL其实可以用来做更加神奇的东西。
最近刚到一家创业型的新公司(尼玛,选择这个公司真的是比较纠结,因为手里有好几个offer,但是这边给的工资待遇很低,因为创业型公司吗。我也不知道为什么会选择这家公司,反正是为了选择这家公司,朋友都很不解,其实我也不知道为什么会选择这家,其他公司的工资大概是这家公司的两倍,希望这次没有选错,不然.想死的心都会有,说了这么多废话),做的是现在比较火的微信公众平台的开发,因为微信现在开放的接口特别的少,所以通过接口得到的东西特别的少(尼玛,小马哥你什么时候多放的借口啊!),但是官方提供的操作平台有很多接口中没有数据所以,我们需要去自己去找一些数据了,好吧,主角上场CURL。
首先公众平台是要登录才能访问,那我就先登录吧(废话),首先需要抓包分析一下正常提交数据,这里我就不截图了(博客在bae平台上,编辑器还没有时间去理他,不太好使),通过抓包分析得出,微信的公众平台使用的是ajax登录,且密码在提交之前已经进行了md5加密(好像正规应该叫md5散列把,而且标准的MD5散列应该是128位的,不过为了方便存储和传输就现在最多的就是32和16位了,刚了解,惭愧),还有很重要一点就是,微信公众平台采用的是https协议进行登录的。最爽的一点就是不用验证码,sogay。不然老费劲了,分析到这就可以了。Come on !!!!
代码如下 | 复制代码 |
//这里的头信息都是必须要设置的,这些你都可以在刚才抓包的时候获取到
$ch = curl_init(); curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);//设置cookie的保存目录,这里很重要,你懂的(cookie你都不存,你以为你是麻花腾啊!) //获取到token的值 $loginData = json_decode($loginData,true); $token = explode("=",$loginData['ErrMsg']); $token = array_pop($token); echo "登录微信系统成功<br />";
|
上边就是登录微信公众平台的代码了,经测试十分好用+_+。
这几天微信公众平台接触的比较多,这个只是万里长征的第一步,后边我会分享一下如何将微信的fakeid 和 openid对应起来,实现自己可以自己的平台上显示用户的完整信息(据我了解,网上现在对于如何fakeid 和 openid对应来没有很好的解决方案,通过好几天的奋斗现在已经可以对应起来的,比较麻烦,且已有的用户是无法对起来的(其实这个理论上是可以的,但是没有做出来不乱说,其实是没有时间去做这个,有机会可以尝试,不过实现需要已有系统的支持,也就是你现在的系统必须记录了和用回的聊天记录(我说什么了?我什么都没有说!)))。
体育老师啊,你说你不好好带你的体育课,没有跑来教我们语文,这几天接触不少能写的东西太多了,所以想到那就写到那了,有点乱,几天主要用的是CURL,所以今天说点CURL的实例,正好就把手头的登录微信公众平台的东西写上来了,CURL到此结束,后边我可能会写更多关于微信公众平台的东西。
附:
选项 |
可选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状态码,默认行为是忽略编号小于等于400的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 5.1.3 开始可用。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 7.10时被加入。 |
CURLOPT_POST |
启用时会发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。 |
|
CURLOPT_PUT |
启用时允许HTTP发送文件,必须同时设置CURLOPT_INFILE和CURLOPT_INFILESIZE。 |
|
CURLOPT_RETURNTRANSFER |
将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。 |
|
CURLOPT_SSL_VERIFYPEER |
禁用后cURL将终止从服务端进行验证。使用CURLOPT_CAINFO选项设置证书使用CURLOPT_CAPATH选项设置证书目录 如果CURLOPT_SSL_VERIFYPEER(默认值为2)被启用,CURLOPT_SSL_VERIFYHOST需要被设置成TRUE否则设置为FALSE。 |
自cURL 7.10开始默认为TRUE。从cURL 7.10开始默认绑定安装。 |
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 7.10中被加入。 |
CURLOPT_CLOSEPOLICY |
不是CURLCLOSEPOLICY_LEAST_RECENTLY_USED就是CURLCLOSEPOLICY_OLDEST,还存在另外三个CURLCLOSEPOLICY_,但是cURL暂时还不支持。 |
|
CURLOPT_CONNECTTIMEOUT |
在发起连接前等待的时间,如果设置为0,则无限等待。 |
|
CURLOPT_CONNECTTIMEOUT_MS |
尝试连接等待的时间,以毫秒为单位。如果设置为0,则无限等待。 |
在cURL 7.16.2中被加入。从PHP 5.2.3开始可用。 |
CURLOPT_DNS_CACHE_TIMEOUT |
设置在内存中保存DNS信息的时间,默认为120秒。 |
|
CURLOPT_FTPSSLAUTH |
FTP验证方式:CURLFTPAUTH_SSL (首先尝试SSL),CURLFTPAUTH_TLS (首先尝试TLS)或CURLFTPAUTH_DEFAULT (让cURL自动决定)。 |
在cURL 7.12.2中被加入。 |
CURLOPT_HTTP_VERSION |
CURL_HTTP_VERSION_NONE(默认值,让cURL自己判断使用哪个版本),CURL_HTTP_VERSION_1_0 (强制使用 HTTP/1.0)或CURL_HTTP_VERSION_1_1 (强制使用 HTTP/1.1)。 |
|
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 7.19.4中被加入。 |
CURLOPT_PROXYAUTH |
HTTP代理连接的验证方式。使用在CURLOPT_HTTPAUTH中的位域标志来设置相应选项。对于代理验证只有CURLAUTH_BASIC和CURLAUTH_NTLM当前被支持。 |
在cURL 7.10.7中被加入。 |
CURLOPT_PROXYPORT |
代理服务器的端口。端口也可以在CURLOPT_PROXY中进行设置。 |
|
CURLOPT_PROXYTYPE |
不是CURLPROXY_HTTP (默认值) 就是CURLPROXY_SOCKS5。 |
在cURL 7.10中被加入。 |
CURLOPT_REDIR_PROTOCOLS |
CURLPROTO_*中的位域值。如果被启用,位域值将会限制传输线程在CURLOPT_FOLLOWLOCATION开启时跟随某个重定向时可使用的协议。这将使你对重定向时限制传输线程使用被允许的协议子集默认libcurl将会允许除FILE和SCP之外的全部协议。这个和7.19.4预发布版本种无条件地跟随所有支持的协议有一些不同。关于协议常量,请参照CURLOPT_PROTOCOLS。 |
在cURL 7.19.4中被加入。 |
CURLOPT_RESUME_FROM |
在恢复传输时传递一个字节偏移量(用来断点续传)。 |
|
CURLOPT_SSL_VERIFYHOST |
1 检查服务器SSL证书中是否存在一个公用名(common name)。译者注:公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。2 检查公用名是否存在,并且是否与提供的主机名匹配。 |
|
CURLOPT_SSLVERSION |
使用的SSL版本(2 或 3)。默认情况下PHP会自己检测这个值,尽管有些情况下需要手动地进行设置。 |
|
CURLOPT_TIMECONDITION |
如果在CURLOPT_TIMEVALUE指定的某个时间以后被编辑过,则使用CURL_TIMECOND_IFMODSINCE返回页面,如果没有被修改过,并且CURLOPT_HEADER为true,则返回一个"304 Not Modified"的header, CURLOPT_HEADER为false,则使用CURL_TIMECOND_IFUNMODSINCE,默认值为CURL_TIMECOND_IFUNMODSINCE。 |
|
CURLOPT_TIMEOUT |
设置cURL允许执行的最长秒数。 |
|
CURLOPT_TIMEOUT_MS |
设置cURL允许执行的最长毫秒数。 |
在cURL 7.16.2中被加入。从PHP 5.2.3起可使用。 |
CURLOPT_TIMEVALUE |
设置一个CURLOPT_TIMECONDITION使用的时间戳,在默认状态下使用的是CURL_TIMECOND_IFMODSINCE。 |
|
对于下面的这些option的可选参数,value应该被设置一个string类型的值:
选项 |
可选value值 |
备注 |
CURLOPT_CAINFO |
一个保存着1个或多个用来让服务端验证的证书的文件名。这个参数仅仅在和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.html HTTP/1.0rnrn"是不正确的。 Note: 在确定服务器支持这个自定义请求的方法前不要使用。
|
|
CURLOPT_EGDSOCKET |
类似CURLOPT_RANDOM_FILE,除了一个Entropy Gathering Daemon套接字。 |
|
CURLOPT_ENCODING |
HTTP请求头中"Accept-Encoding: "的值。支持的编码有"identity","deflate"和"gzip"。如果为空字符串"",请求头会发送所有支持的编码类型。 |
在cURL 7.10中被加入。 |
CURLOPT_FTPPORT |
这个值将被用来获取供FTP"POST"指令所需要的IP地址。"POST"指令告诉远程服务器连接到我们指定的IP地址。这个字符串可以是纯文本的IP地址、主机名、一个网络接口名(UNIX下)或者只是一个'-'来使用默认的IP地址。 |
|
CURLOPT_INTERFACE |
网络发送接口名,可以是一个接口名、IP地址或者是一个主机名。 |
|
CURLOPT_KRB4LEVEL |
KRB4 (Kerberos 4) 安全级别。下面的任何值都是有效的(从低到高的顺序):"clear"、"safe"、"confidential"、"private".。如果字符串和这些都不匹配,将使用"private"。这个选项设置为NULL时将禁用KRB4 安全认证。目前KRB4 安全认证只能用于FTP传输。 |
|
CURLOPT_POSTFIELDS |
全部数据使用HTTP协议中的"POST"操作来发送。要发送文件,在文件名前面加上@前缀并使用完整路径。这个参数可以通过urlencoded后的字符串类似'para1=val1¶2=val2&…'或使用一个以字段名为键值,字段数据为值的数组。如果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的加密算法列表。例如RC4-SHA和TLSv1都是可用的加密列表。 |
|
CURLOPT_SSLCERT |
一个包含PEM格式证书的文件名。 |
|
CURLOPT_SSLCERTPASSWD |
使用CURLOPT_SSLCERT证书需要的密码。 |
|
CURLOPT_SSLCERTTYPE |
证书的类型。支持的格式有"PEM" (默认值), "DER"和"ENG"。 |
在cURL 7.9.3中被加入。 |
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]"。 |
相关文章
- 支付宝支付在国内算是大家了,我们到处都可以使用支付宝了,下文整理介绍的是在安卓app应用中使用支付宝进行支付的开发例子。 之前讲了一篇博客关与支付宝集成获取...2016-09-20
- eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
- 在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
Python astype(np.float)函数使用方法解析
这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08- PHP+Ajax有许多的功能都会用到它小编今天就有使用PHP+Ajax实现的一个微信登录功能了,下面我们来看一个PHP+Ajax手机发红包的程序例子,具体如下所示。 PHP发红包基本...2016-11-25
- 这篇文章主要介绍了Mybatis Plus select 实现只查询部分字段的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-01
- 这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
- 下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- 华为手机怎么恢复已卸载的应用?有时候我们在使用华为手机的时候,想知道卸载的应用怎么恢复,这篇文章主要介绍了华为手机恢复应用教程,需要的朋友可以参考下...2020-06-29
- 很多用安卓智能手机的朋友是用九宫格锁屏,网上也有暴力删除手机图形锁的方法,不过我们可以用程序来破解。本文只提供技术学习,不能干坏事 安卓手机的图形锁(九宫格)...2016-09-20
- 华为手机怎么开启双时钟?华为手机是可以设置双时钟的,如果来回在两个有时差的地方工作,是可以设置双时钟显示,下面我们就来看看华为添加双时钟的技巧,需要的朋友可以参考下...2020-12-08
- CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
MyBatisPlus-QueryWrapper多条件查询及修改方式
这篇文章主要介绍了MyBatisPlus-QueryWrapper多条件查询及修改方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2022-06-27安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法
手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21Android开发中findViewById()函数用法与简化
findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20- 这篇文章主要介绍了Oracle使用like查询时对下划线的处理方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-16
- 这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
- strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
- 这篇文章主要介绍了解决mybatis-plus 查询耗时慢的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-04