php经典实例-笔记3-web与表单

来源:互联网 发布:数据库索引的原理 编辑:程序博客网 时间:2024/05/22 11:17

1、设置cookie

setcookie():cookie是随着http头部一起发送过来的。

第三个参数:设置过期时间,时间戳形式。没有设置,cookie就会在浏览器关闭的时候自动过期。

第四个参数:路径。只有在被请求的页面路径以指定的字符串开头的情况下,cookie才会被发送回服务器。

第五个参数:域名。只有当被请求页面的主机名以指定的域名结尾时,cookie才会被发送回服务器。

第六个参数:安全标记。

 

遍历所有的cookie:

foreach($_COOKIE as $cookie_name=>$cookie_value){    echo $cookie_name.'='.$cookie_value;}

 

2、重定向

header('Location:http://www.baidu.com');  exit(); 

 重定向的url应该包含协议和主机名,而不应该只用路径名。调用exit()这个函数,是防止输出。

将用户重定向到的目标url可以通过get实现,不能通过post把用户重定向到取得的url上。

 

3、检测不同的浏览器

1) 第一种是:使用$_SERVER[HTTP_USER_AGENT]选项

此方法获取的是格式不规则的数据。具体浏览器型号需要自己分析才能获取。

2)使用get_brower()函数

使用这个函数,必须在php.ini文件里增加指向browscap.ini文件的配置,browscap.ini文件里面记录了所有已存在的浏览器的类型及信息。

browscap=xxx/php_browscap.ini

这样,get_brower()函数会检查环境变量,并将其与外部的浏览器能力文件进行比较。

4、建立url字符串:http_build_query()

通过自动编码来防止变量名或值中的特殊字符破坏构建url。

htmlentities():转换字符为html字符编码,防止字符标记被浏览器执行。

 

5、获取post请求的主体

php://input:从请求中获取原始的数据。

 

6、使用HTTP的基本或摘要认证

全局变量$_SERVER['PHP_AUTH_USER']和$_SERVER['PHP_AUTH_PW']包含着用户提供的用户名和密码。如果想拒绝页面的访问,可以发送一个WWW-Authenticate头部信息,并将认证区域标识为状态码为401的响应。

浏览器收到401头部信息后,会弹出要求输入用户名和密码的对话框,用户名和密码如果被服务器接受,是与WWW-Authenticate头部的区域关联的。

一个基本认证的例子:

function validate($user, $pwd){   if($user=='pan' && $pwd=='123'){      return true;   } else {      return false;   }}if(!validate($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])){    header('www-authenticate:basic realm=my website');    header('HTTP/1.0 401 unauthorized');    echo "you need to enter a valid username and password";    exit();}

基本认证时,用户名和密码在网络中是以明码发送的,安全性不高。

摘要认证时,则不会将密码从浏览器发送到服务器,发送的只是密码的散列码。

 

7、把输出冲刷到浏览器

强制把信息发送到浏览器,使用flush()。

 

8、压缩web输出

支持自动解压缩的浏览器发送压缩后的内容,在php.ini中设置:

zlib.output_compression = on
zlib.output_compression_level = x

浏览器是通过Accept-Encoding头部信息告诉服务器它是否能够接受压缩的响应数据的。如果浏览器发送了Accept-Encoding:gzip或Accept-Encoding:deflate,而php开启了zlib扩展,那么zlib.output_compression配置指令会告诉php在将输出发送到浏览器之前,先以适当的算法对其进行压缩处理。而浏览器则会对接收到的数据先解压缩再显示。

zib.output_compression_level配置指令调整压缩的级别。

 

9、环境变量

设置:putenv(‘xxx=yyy')
读取:getenv() 或 $_ENV[]


10、