Blog

52 search results for:

25

PHP中的获取远程内容和自动化

/ in Boke / by Terry
PHP中的获取远程内容和自动化 CURL的底层实现是一个命令行工具,用于远程文件或资源传输,它支持FTP/FTPS、HTTP/HTTPS、SCP/SFTP、Telnet、DICT和FILE/LDAP协议。包括HTTPS认证,HTTP的POST和PUT方式通讯,FTP上传,基于表单的上传,代理服务器及Cookies验证,HTTP认证(包括基本认证、加密认证等),文件的断点续传,HTTP代理管道。 CURL的主要用途就是命令行的自动化工具,如模拟一个使用者在浏览器端访问一个网站,自动登陆,或者自动提取网页中的内容或二进制文件或数据。 Libcurl是一个开放源代码的软件,它遵守MIT协议,它相当于一个API库,用户可以单独打包到自己的应用程序中。 在PHP中,Libcurl已经被捆绑到PHP的标准协议中,与PHP5标准发行包一同发布。 首先需要在php.ini 中打开php_curl.php或php_curl.so的扩展:extension=php_curl.dll //UNIX环境下的文件扩展库名为curl.so 毫无疑问,CURL的功能是丰富且强大的,下面我给大家举一些使用的功能案例。 1. 获取远程网页内容   2. 下载远端文件   3. 使用表单自动登陆 使用带Cookie的GET表单登陆 在一些登陆表单中,需要发送Cookie内容才能实现正确登陆,使用CURL非常容易实现。 4. POST方法的表单登陆 特别要注意,POST的数据要经过urlencode的编码。 其实模拟登陆同样可以使用Snoopy类来轻松实现,在编码时更加简洁方便,我会在下一篇文章给大家介绍Snoopy的使用功能。
26

PHP开发安全代码的解决方案

/ in Boke / by Terry
我们在进行PHP项目开发的过程对于程序能否安全运行,这个是我们开发者的职责,下面细分一下我们用到的处理机制。 1. 用户输入验证 一个非常重要的技术就是如何从用户的输入中有效验证数据,从而保护我们的网站程序和数据。我们需要检查用户输入的全部内容:不管这个数据是从Cookies、Get方法或Post方法来的数据,我们都要检查。 除了在PHP.ini文件中把register_globals设置为off外,还需要把错误级别修改为E_ALL | E_STRICT。
27

PHP的缓冲技术实战(二)

/ in Boke / by Terry
上一篇我提到过PHP缓冲技术的回调中的替换。 我举一个例如,将我们编写的输出替换函数作为参数传递给ob_start()函数,作为回调函数处理,这个回调函数将完成全部的替换功能。 下面介绍一下缓冲压缩内容输出 PHP的输出缓冲允许我们将内容压缩后在进行输出,利用这个功能我们可以把网页中的内容压缩后再发送到客户端,从而达到给网站提速的作用,而且在提高了用户的浏览速度的同时节省了服务器资源,可以更合理地分配网络带宽。 我们仍使用ob_start()函数,只不过给它换个参数:ob_gzhandler。例如: 总结一下,我们可以利用PHP输出缓冲做一些更使用的事情,例如输出静态网页,以及让我们的程序响应更加快速等。
28

PHP的缓冲技术实战

/ in Boke / by Terry
如何利用PHP的输入输出缓冲让PHP脚本运行得更加快速和高效。下面主要介绍PHP输入输出缓冲的实战技术。 在PHP中,对缓冲的操作以及与缓冲相关的函数名均以ob_开头。在PHP脚本中开启输出缓冲,只要在脚本首行声明ob_start()函数即可,这样我们就可以打印任何文本或要显示的HTML页面。虽然输出缓冲打开了,但是在PHP脚本没有执行结束之前,是不会有任何输出发送到客户端浏览器的,这可能不是我们想要的结果,因为尤其是运行了一个很长时间的脚本时,客户端浏览器会长时间显示空白页面或停止响应,这是一个很烦人的用户体验。 不过这也是可以解决的,我们可以立即将缓冲做“flush”输出。使用ob_flush()函数,当这个函数执行后,在之前已经运行和收集到的输出缓冲会被立即发送到客户端,然后再输出ob_flush()函数后面的缓冲。我们也可以清空收集到的输出缓冲区的内容,可以使用ob_clean()函数,这个函数将完全情况所有的输出缓冲。 如果在一个脚本中做输出缓冲时需要马上结束,我们可以使用两种函数:ob_end_clean()和ob_end_flush()。ob_end_clean()表示结束输出缓冲功能,凡是已经收取的数据会被立即抛弃。ob_end_flush()函数功能也是结束缓冲,但会先将已经收取的输出缓冲输出到客户端再抛弃。因此,大部分时候,我们使用的是ob_end_flush()函数。 输出缓冲一个最大好处还不仅在于此,而是输出缓冲能够实现多层次。例如: 在上面的例子中,第二个缓冲是不会送到客户端,而第一个缓冲可以看到。 下面说说从缓冲读取内容 在PHP中,使用ob_get_contents()函数打开并读取一个缓冲区内容。ob_get_contents函数没有参数,它返回的内容是最近使用的缓冲,例如: $result = mysql_query("select * from table where id=55"); while($row = mysql_fetch_assoc($result)){ print(...); } 如果不想把数据输出到浏览器上,而是直接输出到文件中,这就需要使用到ob_get_contents()和 ob_get_length()函数。例如: ob_start(); $result = mysql_query("select * from table…
29

PHP流和封装器的应用

/ in Boke / by Terry
PHP 5 支持流的封装器,流封装器是封装流的代码实现,根据协议来管理流。 PHP默认支持几种流封装器,可以在这些经常使用的协议上透明地绑定流,类似于下面的代码: wrapper: //data name 一个封装的标准如file:// ,它简化了对需要频繁使用的本地文件的访问。 封装器适用于以下两种情况:当数据从一个数据源取得,或要向一个数据源写入时(如文件存取);另一种是使用新的访问方法(如HTTP 或FTP)存取数据。PHP5 都提供了标准化的访问方式。 PHP5 已经提供了一些预置的流包装器,这可以应付大多数的应用,我们可以通过phpinfo() 函数找到这些流包装器,例如: 1. 已注册的PHP 流包装器:php、file、http、ftp、compress.zlib、compress.bzip2 2. 已注册流的Socket传输方式:tcp、udp、unix、udg 3. 已注册的流过滤器:bzip2*,convert.iconv.*、string.rot13、string.toupper、string.tolower、string.strip_tags、convert.*、consumed、zlib.* 在PHP程序中应用封装器是很简单的,实际上我们只要能够处理file即可。下面介绍几个流封装器开发的使用例子。 1. 从一个网站获取meta标签内容 下面的脚本读取网站的HTML数据,并确定内容的meta标签,然后显示出来,代码如下: foreach($tags as $name=>$content){ echo…
30

数据库索引效率分析

/ in Boke / by Terry
当我们在创建好一个数据库表时,虽然已经同时创建好各个表的索引,但却不知道该索引的执行效率如何?是否是索引方案中最有效的一种? MySQL提供了一个内建的SQL命令来帮助我们完成这个任务,这就是EXPLAIN命令。EXPLAIN命令一般语法是:EXPLAIN。例子如下: EXPLAIN SELECT peopleid FROM people WHERE firstname='Mike' AND lastname='Sullivan' AND age='17'; 这个命令将返回分析结果,我们来看看这些数据是什么意思: table:这是表的名字。 type: 连接操作的类型。如果EXPLAIN显示连接类型是“ALL”,而且你并不想从表里面选择出大多数记录,那么MySQL的操作效率将非常低,因为它要扫描整个表。你可以加入更多的索引来解决这个问题。 possible_keys: 可能可以利用的索引的名字。这里的索引名字是创建索引时指定的索引昵称;如果索引没有昵称,则默认显示的是索引中第一个列的名字。默认索引名字的含义往往不是很明显。 Key: 它显示了MySQL实际使用的索引的名字。如果它为空(或NULL),则MySQL不使用索引。 key_len: 索引中被使用部分的长度,以字节计。 ref: 它显示的是列的名字(或单词“const”),MySQL将根据这些列来选择行。 rows: MySQL所认为的它在找到正确的结果之前必须扫描的记录数。显然,这里最理想的数字就是1。 Extra: 这里可能出现许多不同的选项,其中大多数将对查询产生负面影响。

Need Translation Service?

Please enter your personal details and we will contact you shortly.