注意:ob_flush()和flush()这两个函数一般要一起使用,顺序是先ob_flush(),然后flush(),它们的作用是刷新缓冲区。
这里具体的说下什么时候要用到刷新缓冲区和为什么要刷新缓冲区。
一、什么时候要刷新缓冲区
当程序中用到file_get_contents()和file_put_contens()这两个函数时,或程序中执行类似的“读写”功能或向浏览器执行输出操作时,会用到ob_flush()和flush()来刷新缓冲区。
二、为什么要刷新缓冲区
用file_get_contents()和file_put_content()为例进行讲解。
file_get_contents()和file_put_conents()这两个函数分别执行读取数据和写入数据操作,数据是先被读到内存中然后在写入文件中的,因为读取的速度比写入的速度要快,所以当你的数据被读完的时候不代表数据也写入完毕,这个时候多读的内容就会被暂时放到缓冲区中(内存),在这里需要强调一下,其实数据读取和写入是两个非常快的动作哦。
还用一种解释(当程序向浏览器执行输出操作时),个别web服务器程序,特别是Win32下的web服务器程序,在发送结果到浏览器之前,仍然会缓存脚本的输出,直到程序结束为止。如果你不想让程序执行完毕才向浏器输出,那么你也可以用到ob_flush()和flush()来刷新缓存。
其实,flush()还有一种用途,就是在没结束程序之前就进行输出,即一个循环还没结束就可以把部分结果输出到浏览器上,这个效果很类似 ajax的异步传输效果。
由于自己网站的ftp不具有直接设置空间上文件的属性,于是写了一段php代码来修改index.php文件属性。
为index.php文件设置只读属性后,木马就没权限给你文件末尾追加广告了。
下面我们看具体的代码,设置index.php只读:
function set_writeable($file_name)
{
if(@chmod($file_name,0555))
{
echo "修改index.php文件只读属性成功";
}
else
{
echo "修改index.php文件只读属性失败,空间商不支持此操作!";
}
}
set_writeable("index.php");
?>
把以上内容保存成setread.php,然后上传到空间,直接浏览器浏览该地址即可设置只读。
不过设置这个只读属性以后,你自己通过ftp也没有权限删除index.php,如果需要删除或者覆盖index.php请使用以下代码设置index.php的读写权限。
下面是设置index.php读写的代码:
function set_writeable($file_name)
{
if(@chmod($file_name,0777))
{
echo "修改index.php文件读写属性成功";
}
else
{
echo "修改index.php文件读写属性失败,空间商不支持此操作!";
}
}
set_writeable("index.php");
?>
保存以上内容为:setwrite.php,通过浏览器访问即可设置读写权限了。
我们知道,mysqli是PHP 5中新提供的MySQL接口,此接口使用了面向对象的思想。使用mysqli接口的代码可读性更强,其执行效率比mysql接口高。而且mysqli提供了一个能够一次执行多个SQL语句的multi_query()函数。但是,mysqli接口只支持PHP 5和MySQL 4.1之后的版本。
query()函数一次只能执行一条SQL语句,而multi_query()函数可以一次执行多个SQL语句。
如果第一个SQL语句执行正确,那么multi_query()函数返回true,否则返回false。
通过store_result()函数获取multi_query()函数执行查询的记录。一次只能获取一个SQL语句的执行结果。
通过next_result()函数判断下一个SQL语句的结果是否存在,如果存在,返回true。
示例:
$rs=$connection->multi_query($sql);