一、使用echo方法输出信息
在PHP中,echo()是最常用的方法,用来将服务器端的数据发送给浏览器。
所发送的内容可以是字符串常量、变量、HTML代码、JavaScript代码等所有浏览器能解释的代码。
缺省写法:<?=... ?>("<?"和"="之间不能有空格)
使用缺省写法时,PHP代码必须用"?>"和"<?"进行封闭。
echo的功能和print的功能基本相同,但是echo可以同时输出多个字符串之间用","隔开即可,而print一次只能输出一个字符串。
二、header()函数的使用
void header(string message[,bool replace[,int http_response_code]]);
其中,message参数用来设置响应头信息,其格式为"header_name:header_value";
作用:
(一)重定向网页
使用location响应头,可以重定向网页。
<?php
header("location:http://www.sohu.com");
header("location:http://www.baidu.com");
?>
注意:
①location和":"号之间不能有空格。
②在header语句之前,服务器不能向客户端发送任何数据,也不能有HTML代码
③如果PHP代码中有多条重定向语句,则会重定向到最后一条语句中的URL,表明执行重定向语句后仍会继续执行后面的语句,若要重定向后立即停止脚本,应在重定向后使用exit()或die()方法退出。
(二)文件延迟转向
使用Refresh响应头,可以使页面延迟N秒后重定向到指定的URL页面。
<?php
header("Refresh:3;url=http://www.baidu.com");
echo "三秒后跳转到百度首页";
?>
(三)禁用浏览器缓存
为了让用户每次都能从服务器上获取最新的网页,而不是浏览器缓存中的网页可以用下列标头禁用浏览器缓存。
header('Expires:Mon,26 Jul 1997 05:00:00 GMT'); //设置过期时间为过去的某一天
header('Last-Modified:'.gmdate('D,d M Y H:i:s').'GMT');
header('Cache-Control:no-store,no-cache,must-revalidate');
header('Pragma:no-cache');
四)强制下载文件
简单文件可以通过超链接下载,后缀名为.html的文件用超链接会直接输出给浏览器,这时就可以用header函数强制下载文件。
//根据实际情况修改使用
<?php
$filename="test.gif"; //指定文件名
header('Content-Type:image/gif;); //指定下载文件类型
header('Content-Disposition:attachment;filename="'.$filename.'"');//下载文件的描述
header('Content-Length:'.filesize($filename));//下载文件的大小
readfile($filename);//将文件内容读取出来并直接输出以便下载
?>
缓冲区操作
缓冲区是服务器内存中的一块区域。在没有开启缓冲区时,执行文件输出的内容直接输出到浏览器,
开启缓冲区后,执行文件会先存入缓冲区直到脚本执行完毕,再将缓冲区的内容发送给浏览器。
缓冲区操作函数:
ob_start(); //打开输出缓冲区
ob_get_contents(); //返回内部缓冲区的内容
ob_get_clean(); //返回内部缓冲区的内容,并关闭缓冲区
ob_get_flush(); //返回内部缓冲区的内容,并关闭缓存区,再将缓冲区的内容立即输出到客户端
ob_get_length(); //返回内部缓冲区的长度
ob_clean(); //删除内部缓冲区的内容,但不关闭缓冲区
ob_flush(); //立即输出内部缓冲区的内容,但不关闭缓冲区
flush(); //刷新输出缓冲,将ob_flush输出的内容,以及不在PHP缓冲区的内容,全部输出至浏览器
ob_end_clean(); //删除内部缓冲区的内容,并关闭缓冲区
ob_end_flush(); //立刻输出内部缓冲区的内容,并不关闭缓冲区
缓冲区函数名中,end表示关闭缓冲区;clean表示删除缓冲区的内容;flush表示发送缓冲区的内容到浏览器;get表示缓冲区中的内容将作为函数的返回值返回。
1)使用ob_start()打开缓冲区
缓冲区打开,运行程序会先延迟一会,然后一起输出所有内容。
<?php
ob_start();
for($i=0;$i<1000;$i++){
for($j=0;$j<10000;$j++){
echo $i." ";
}
}
?>
2)ob_flush()和ob_clean()函数
PHP会在以下三种情况下将缓冲区中的内容发送给客户端
①遇到ob_flush()、ob_end_flush()、ob_get_flush()函数
②程序执行完
③遇到exit或die函数提前终止程序
<?php
ob_start();
echo "ONE<br/>";
ob_flush(); //立刻输出缓冲区的内容
echo "TWO<br/>";
ob_clean(); //清除缓冲区内容
echo "THREE<br/>";
ob_end_flush();//发送缓冲区内容到浏览器,并关闭缓冲区
?>
/*运行结果*/
/*
ONE
THREE
*/
3)ob_get_contents和ob_get_length函数
<?php
ob_start();
echo "<b>hello</b>";
$str=ob_get_contents();
$len=ob_get_length();
ob_end_clean();
echo $str." ".$len;
?>
/*运行结果*/
/*
hello 12
*/