yeah

搜索

计数器

64576

链接

检查指定网址的 DNS 记录

谈谈PHP的输入输出流

yeah posted @ Jan 31, 2010 11:57:28 PM in 教程 , 9126 阅读

手册上说:

PHP 3.0.13 及以上版本,自 PHP 4.3.0 起支持 php://output 和 php://input,自 PHP 5.0.0 起支持 php://filter。 

php://stdin

php://stdout

php://stderr

php://output

php://input

php://filter

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

php://output 允许向输出缓冲机制写入数据,和 print() 与 echo() 的方式相同。 

php://input 允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。php://input 不能用于 enctype="multipart/form-data"。 

php://stdin 和 php://input 是只读的,同时 php://stdout,php://stderr 和 php://output 是只写的。 

php://filter 是一种设计用来允许过滤器程序在打开时成为流的封装协议。这对于单独具有完整功能的文件函数例如 readfile(),file() 和 file_get_contents() 很有用,否则就没有机会在读取内容之前将过滤器应用于流之上。 


   也就是说post的原始数据是保存在一个叫php://input的文件。你可以通过简单的文件操作读取里面的数据来控制。

  

示例:

html部分:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="r.php">
  <label>名字
  <input type="text" name="name" id="name" />
  </label>
  <label><br />
  密码
  <input type="text" name="password" id="password" />
  <br />
  <input type="submit" name="submit" id="submit" value="提交" />
  </label>
  <label>
  <input type="reset" name="reset" id="reset" value="重置" />
  </label>
</form>
</body>
</html>


PHP部分:

if(strtolower($_SERVER['REQUEST_METHOD']) == "post"){
 echo file_get_contents("php://input"); 
}

你试试就知道效果了


Tags -

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter