使用PHP在同一服务器上执行子请求
我的服务器上有一个现有的REST应用程序。 例如,如果使用DELETE方法向“/users/3”发送请求,它将删除id为3的用户 但是现在我想为这个应用程序创建一个HTML“客户端”。例如,有一个HTML表单,当您提交它时,用户将被删除。 不幸的是,您无法编写使用PHP在同一服务器上执行子请求,php,html,rest,Php,Html,Rest,我的服务器上有一个现有的REST应用程序。 例如,如果使用DELETE方法向“/users/3”发送请求,它将删除id为3的用户 但是现在我想为这个应用程序创建一个HTML“客户端”。例如,有一个HTML表单,当您提交它时,用户将被删除。 不幸的是,您无法编写,因为表单只支持GET和POST。即使你可以,我希望用户被重定向到“操作成功”或“出现错误”页面,这是不可能的 我考虑过使用AJAX,但我需要支持停用Javascript的[insert Injuous comment here] 我可以修
,因为表单只支持GET和POST。即使你可以,我希望用户被重定向到“操作成功”或“出现错误”页面,这是不可能的
我考虑过使用AJAX,但我需要支持停用Javascript的[insert Injuous comment here]
我可以修改应用程序,以便使用method=DELETE&redirect=/successpage&redirectfail=/failpage
发送POST请求,但这将花费大量时间
有没有一种方法可以将POST请求发送到PHP页面,PHP页面会将其转换为真实的请求,然后解释我的应用程序返回的状态代码,并执行适当的重定向
多谢各位
编辑:我没有为应用程序使用任何框架。这在一开始是一个非常简单的应用程序,随着时间的推移,它变得越来越复杂您可以使用PHP的HttpRequest::send来实现这一点。您不能通过表单直接发送它,但是您可以编写一个PHP脚本来响应发送html表单
为什么不只是:
它会将请求发送到自定义页面(信息是在操作中而不是在帖子中发送的)。“删除”来自您的/users/3。Be非常小心-在使用基于文件的会话时,执行自我请求可能会导致死锁。父脚本将加载/锁定会话,然后对另一个脚本执行子请求,该脚本将尝试启动会话本身。父脚本已锁定会话,因此子请求将挂起,直到会话可用。。。但是会话将永远不可用,因为父级正在等待子请求完成。这可以使用REST API完成:
请参阅CURLOPT_CUSTOMREQUEST
选项:
执行请求时使用的自定义请求方法,而不是“GET”或“HEAD”
HTTP请求。这对于执行“删除”或其他更模糊的操作非常有用
HTTP请求。有效值是“GET”、“POST”、“CONNECT”
等等i、 不要在这里输入整个HTTP请求行。对于
实例中,输入“GET/index.html HTTP/1.0\r\n\r\n”将是
不对
例如:
$ch = curl_init('http://localhost/upload.php');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_exec($ch);
因此,在表单发布到表单的目标文件后,将在该表单的目标文件中执行此操作。您可以发布到/users/3,但在表单中包含一个隐藏字段:
<input type="hidden" name="_method" value="delete">
然后在脚本中,您只需检查它是否存在,并删除它,然后相应地运行脚本。这种方法的优点是,添加“put”也变得很容易,因为您只需更改表单中的值。您是否在为PHP应用程序使用框架?哪个?这将使用
HTTP\u METH\u DELETE
常量作为方法。谢谢,我接受cURL答案,因为它与PHPAssuming一起提供。这是一个RESTful应用程序,状态(会话)仅存在于客户端。nikc是对的,我使用HTTP身份验证。不管怎样,谢谢你提供的信息,我不会想到的。我忘了谈论它,但这是另一个不使用表单发送POST-requestsah的理由,这个答案对我帮助很大!