当前位置:  编程技术>php
本页文章导读:
    ▪php header 函数详解 - sudo→三      网页的缓存是由 HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must- revalidate等,默认为private。其作用根据不同的重新浏览方式分为以下几种情况: (1) .........
    ▪Apache中RewriteCond规则参数介绍 - sudo→三      Apache中 RewriteCond语句对于我来说一直是个难点,多次试图去把它搞明白,都没有结构,这次我终于算大概知道它的意思了。RewriteCond就像我们程序中的if语句一样,表示如果符合某个或某几个.........
    ▪对PHP输入输出流学习和认识 - mckee1990      PHP输入和输出流是通过php://来访问的,它允许访问 PHP 的输入输出流、标准输入输出和错误描述符, 内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。php://stdin, ph.........

[1]php header 函数详解 - sudo→三
    来源:    发布时间: 2013-11-07
网页的缓存是由 HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must- revalidate等,默认为private。其作用根据不同的重新浏览方式分为以下几种情况:

(1) 打开新窗口
值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。
而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如:
Cache-control: max-age=5(表示当访问此网页后的5秒内再次访问不会去服务器)
(2) 在地址栏回车
值为private或must-revalidate则只有第一次访问时会访问服务器,以后就不再访问。
值为no-cache,那么每次都会访问。
值为max-age,则在过期之前不会重复访问。
(3) 按后退按扭
值为private、must-revalidate、max-age,则不会重访问,
值为no-cache,则每次都重复访问
(4) 按刷新按扭
无论为何值,都会重复访问
Cache-control值为“no-cache”时,访问此页面不会在Internet临时文章夹留下页面备份。
另外,通过指定“Expires”值也会影响到缓存。例如,指定Expires值为一个早已过去的时间,那么访问此网时若重复在地址栏按回车,那么每次都会重复访问: Expires: Fri, 31 Dec 1999 16:00:00 GMT

比如:禁止页面在IE中缓存
HTTP响应消息头部设置:
CacheControl = no-cache
Pragma=no-cache
Expires = -1
Expires是个好东东,如果服务器上的网页经常变化,就把它设置为-1,表示立即过期。如果一个网页每天凌晨1点更新,可以把Expires设置为第二天的凌晨1点。
当HTTP1.1服务器指定 CacheControl = no-cache时,浏览器就不会缓存该网页。
旧式 HTTP 1.0 服务器不能使用 Cache-Control 标题。
所以为了向后兼容 HTTP 1.0 服务器,IE使用Pragma:no-cache 标题对 HTTP 提供特殊支持。
如果客户端通过安全连接 (https://)/ 与服务器通讯,且服务器在响应中返回 Pragma:no-cache 标题,
则 Internet Explorer不会缓存此响应。注意:Pragma:no-cache 仅当在安全连接中使用时才防止缓存,如果在非安全页中使用,处理方式与 Expires:-1相同,该页将被缓存,但被标记为立即过期
header常用指令
header分为三部分:
第一部分为HTTP协议的版本(HTTP-Version);
第二部分为状态代码(Status);
第三部分为原因短语(Reason-Phrase)。


// 向浏览器发送404 状态码
header(“HTTP/1.1 404 Not Found”);
或者
header(“HTTP/1.1 404″);
// 永久重定向
header(“Location: http://hi.baidu.com/3800_hk”);//默认是301 跳转
// 临时重定向
header(“HTTP/1.1 302 Found”);
header(“Location: http://hi.baidu.com/3800_hk”);
// 下载文件
header(“Content-type: text/plain’); // 可以替换成你需要的MIME类型
header(‘Content-Disposition: attachment; filename=”weizhifeng.txt”‘);
readfile(‘weizhifeng.txt’);
其他的头信息可以参考HTTP/1.1 specification
如果在header之前已经有了输出,那么请使用ob_start()函数。
<?php
header('HTTP/1.1 200 OK');
//设置一个404头:
header('HTTP/1.1 404 Not Found');
//设置地址被永久的重定向
header('HTTP/1.1 301 Moved Permanently');//转到一个新地址
header('Location: http://www.example.org/');
//文件延迟转向:
header('Refresh: 10; url=http://www.example.org/');
print'You will be redirected in 10 seconds';
//当然,也可以使用html语法实现
// <meta http-equiv="refresh" content="10;http://www.example.org/ />
// override X-Powered-By: PHP:
header('X-Powered-By: PHP/4.4.0');
header('X-Powered-By: Brain/0.6b');
//文档语言
header('Content-language: en');
//告诉浏览器最后一次修改时间
$time=time() -60; // or filemtime($fn), etc
header('Last-Modified: '.gmdate('D, d M Y H:i:s',$time).' GMT');
//告诉浏览器文档内容没有发生改变
header('HTTP/1.1 304 Not Modified');//设置内容长度
header('Content-Length: 1234');
//设置为一个下载类型
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="example.zip"');
header('Content-Transfer-Encoding: binary');
// load the file to send:
readfile('example.zip');
// 对当前文档禁用缓存
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Pragma: no-cache');
//设置内容类型:
header('Content-Type: text/html; charset=iso-8859-1');
header('Content-Type: text/html; charset=utf-8');
header('Content-Type: text/plain'); //
    
[2]Apache中RewriteCond规则参数介绍 - sudo→三
    来源:    发布时间: 2013-11-07

Apache中 RewriteCond语句对于我来说一直是个难点,多次试图去把它搞明白,都没有结构,这次我终于算大概知道它的意思了。
RewriteCond就像我们程序中的if语句一样,表示如果符合某个或某几个条件则执行RewriteCond下面紧邻的RewriteRule语句,这就是RewriteCond最原始、基础的功能,为了方便理解,下面来看看几个例子。

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^Mozilla//5/.0.*
RewriteRule index.php index.m.php

RewriteCond %{HTTP_USER_AGENT} ^Lynx.*
RewriteRule index.php index.L.php

RewriteRule index.php index.b.php

 


上 面语句的作用是当你是用FF浏览器访问index.php这个文件的时候,会自动让你访问到index.m.php这个文件,当你是用一些移动终端访问的 时候,会让你对index.php这个文件的访问实际访问的是index.L.php去,如果你是用其它的浏览器访问的时候,会让你跳到 index.b.php。在说形象一点,上面的语句就等同于程序里面的下面语句(依PHP语句为例):

if($_SERVER['HTTP_USER_AGENT'] == 'Mozilla/5.0')
{
//跳转到对index.m.php的访问
}
else if($_SERVER['HTTP_USER_AGENT'] == 'Lynx')
{
//跳转到对index.L.php的访问
}
else
//跳转到对index.b.php的访问


在看例2:
RewriteCond %{HTTP_REFERER} (www.test.cn)
RewriteRule (.*)$ test.php
上面语句的作用是如果你访问的上一个页面的主机地址是www.test.cn,则无论你当前访问的是哪个页面,都会跳转到对test.php的访问。

在看例三:

RewriteCond %{REMOTE_HOST} ^host1.* [OR]
RewriteCond %{REMOTE_HOST} ^host2.* [OR]
RewriteCond %{REMOTE_HOST} ^host3.*
RewriteRule (.*)$ test.php

 


上面语句的作用是如果你的地址是host1或host2或host3的时候,则就跳到对test.php。从这里可以看出,RewriteCond语句之间默认的是AND,如果想要OR,则要明确的写出来。

下面是自己收藏的一些有用的重写规则:
RewriteCond %{REQUEST_FILENAME} !-f   //如果文件存在,就直接访问文件,不进行下面的RewriteRule.(不是文件或文件不存在就执行重写)

RewriteCond %{REQUEST_FILENAME} !-d   //#如果目录存在就直接访问目录不进行RewriteRule

RewriteCond %{REQUEST_URI} !^.*(/.css|/.js|/.gif|/.png|/.jpg|/.jpeg)$ //#如果是这些后缀的文件,就直接访问文件,不进行Rewrite

 

 

                                                                                                                                                                                                                       (转)


本文链接:http://www.cnblogs.com/wlgaojin/p/3156850.html,转载请注明。


    
[3]对PHP输入输出流学习和认识 - mckee1990
    来源:    发布时间: 2013-11-07

PHP输入和输出流是通过php://来访问的,它允许访问 PHP 的输入输出流、标准输入输出和错误描述符, 内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。

php://stdin, php://stdout 和 php://stderr

php://stdin,php://stdout 和 php://stderr允许访问 PHP 进程相应的输入或者输出流。

php://input

php://input 是个可以访问请求的原始数据的只读流。 POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA(原生的post数据),因为它不依赖于特定的 php.ini 指令,内存消耗更少。如下例:

 

  • <formaction=""method="post">
  • <inputtype="text"name="test"><inputtype="submit"name=""/>
  • </form>
  • <?php
  • echo file_get_contents("php://input");
  • ?>
  •  

    结果:

    php://output

    php://output 是一个只写的数据流, 允许你以 print 和 echo 一样的方式 写入到输出缓冲区。

    php://fd

    php://fd 允许直接访问指定的文件描述符。 例如 php://fd/3 引用了文件描述符 3。

    php://memory 和 php://temp

    php://memory 和 php://temp 是一个类似文件 包装器的数据流,允许读写临时数据。 两者的唯一区别是 php://memory 总是把数据储存在内存中, 而 php://temp 会在内存量达到预定义的限制后(默认是 2MB)存入临时文件中。 临时文件位置的决定和 sys_get_temp_dir() 的方式一致。

    php://filter

    php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和 file_get_contents(), 在数据流内容读取之前没有机会应用其他过滤器。参数如下:

    如下例:

     

  • <?php
  • /* 这会以大写字母输出 www.phpddt.com 的全部内容 */
  • readfile("php://filter/read=string.toupper/resource=http://www.phpddt.com");
  • ?>
  • 欢迎转载! 原文地址: http://www.phpddt.com/php/php-input-output.html ,转载请注明地址,谢谢!

    本文链接:http://www.cnblogs.com/phpddt/p/3159898.html,转载请注明。


        
    最新技术文章:
    ▪PHP函数microtime()时间戳的定义与用法
    数据库其它 iis7站长之家
    ▪PHP数组排序方法总结(收藏)
    ▪php数组排序方法大全(脚本学堂整理奉献)
    ▪php数组排序的几个函数(附实例)
    ▪php二维数组排序(实例)
    ▪php根据键值对二维数组排序的小例子
    ▪php验证码(附截图)
    ▪php数组长度的获取方法(三个实例)
    ▪php获取数组长度的方法举例
    ▪判断php数组维度(php数组长度)的方法
    ▪php获取图片的exif信息的示例代码
    ▪PHP 数组key长度对性能的影响实例分析
    ▪php函数指定默认值的方法示例
    ▪php提交表单到当前页面、提交表单后页面重定...
    ▪php四舍五入的三种实现方法
    ▪php获得数组长度(元素个数)的方法
    ▪php日期函数的简单示例代码
    ▪php数学函数的简单示例代码
    ▪php字符串函数的简单示例代码
    ▪php文件下载代码(多浏览器兼容、支持中文文...
    ▪php实现文件下载、支持中文文件名的示例代码...
    ▪php文件下载(防止中文文件名乱码)的示例代码
    ▪解决PHP文件下载时中文文件名乱码的问题
    ▪php数组去重(一维、二维数组去重)的简单示例
    ▪php小数点后取两位的三种实现方法
    ▪php Redis 队列服务的简单示例
    ▪PHP导出excel时数字变为科学计数的解决方法
    ▪PHP数组根据值获取Key的简单示例
    ▪php数组去重的函数代码示例
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3