相关疑难解决方法(0)

为什么php://输入可以多次读取,尽管文档说不然?

PHP文档的状态php://input只能读一次.

在我的应用程序中,我需要读取它两次,一次用于身份验证,一次用于实际处理内容,两个函数都由不同的独立模块处理.疯狂的是:它有效.

我可以指望在任何地方工作,或者这是我的PHP版本(5.2.10)中的侥幸?我能找到的关于这个的唯一文档就是说它不应该工作,没有提到版本限制.


在丹尼斯的预感之后,我做了这个测试:

$in = fopen('php://input', 'r');
echo fread($in, 1024) . "\n";
fseek($in, 0);
echo fread($in, 1024) . "\n";
fclose($in);
echo file_get_contents('php://input') . "\n";
Run Code Online (Sandbox Code Playgroud)

冰壶:

$ curl http://localhost:8888/tests/test.php -d "This is a test"
This is a test

This is a test
Run Code Online (Sandbox Code Playgroud)

显然它只限于每个打开手柄一次读取.


更多的挖掘表明php://input,对于PUT请求确实只能读取一次.上面的示例使用了POST请求.

php post inputstream

18
推荐指数
1
解决办法
4050
查看次数

标签 统计

inputstream ×1

php ×1

post ×1