使用PHP的HTTP PUT、DELETE和I/O流

使用PHP的HTTP PUT、DELETE和I/O流,php,http,put,http-delete,Php,Http,Put,Http Delete,除了$putdata=fopen(“php://input“,“r”) 我从未使用过PUT和DELETE方法和$putdata=fopen(“php://input“,“r”)似乎有点粗略。它在任何地方都能工作吗?需要特定的服务器/php.ini配置吗 我知道我可以从$\u服务器['request\u method']获取请求方法 但是数据是否会在$\u请求中,如果是,那么什么php://input是关于什么的? 如何访问通过DELETE发送的数据?否,您需要手动解析请求$\u请求仅包含来自GE

除了
$putdata=fopen(“php://input“,“r”)

我从未使用过
PUT
DELETE
方法和
$putdata=fopen(“php://input“,“r”)似乎有点粗略。它在任何地方都能工作吗?需要特定的服务器/php.ini配置吗

我知道我可以从
$\u服务器['request\u method']获取请求方法

但是数据是否会在
$\u请求中
,如果是,那么什么
php://input
是关于什么的?
如何访问通过
DELETE
发送的数据?

否,您需要手动解析请求<代码>$\u请求
仅包含来自
GET
POST
请求的数据;对于其他一切,你都是靠自己

如果您的HTTP请求具有
内容类型:application/x-www-form-urlencoded
,您可以使用以下方法非常轻松地将其解析回变量数组:

parse_str(file_get_contents('php://input'), $vars);
print_r($vars);

您可以将此内容类型与任何HTTP方法一起使用,没有标准强加的限制。

有趣!“删除”也将出现在
php://input
?@rinchik:
php://input
包含客户端作为HTTP请求主体发送的内容。方法(GET/POST/DELETE/whatever)也是客户的选择。作为主体发送的数据类型也是客户的选择。因此,是的,只要服务器知道如何处理客户端发送的内容,它将适用于所有情况。我的示例只演示了一种可能的方法,之所以选择它,是因为它与使用POST提交表单时使用的方法完全相同。哦!刚刚发现:替代
file\u get\u contents('php://input“),$vars
@rinchik:我不认为使用来自必须手动安装的扩展的函数而不是执行相同任务的内置函数有什么意义。