如果我發出HTTP DELETE,我該如何訪問PHP正文/變量?我知道如果您發佈POST,您可以通過$_POST['varname']
訪問它,但如果它是DELETE而不是POST,您如何訪問它?說這裏的varname是ID。得到一個PHP刪除變量
回答
您可能需要查看直接從php://input
流讀取數據。
我知道這就是你需要做的PUT
請求和一些快速的谷歌搜索表明該方法也適用於DELETE
。
例如參見here和here。評論here表示此方法也適用於DELETE
。
這裏是一個有趣的代碼示例,這將有助於(從爲了簡潔改變輕微symfony的1.4.9框架的sfWebRequest.class.php):
public function initialize(...)
{
... code ...
$request_vars = array();
if (isset($_SERVER['REQUEST_METHOD']))
{
switch ($_SERVER['REQUEST_METHOD'])
{
case 'PUT':
if ('application/x-www-form-urlencoded' === $this->getContentType())
{
parse_str($this->getContent(), $request_vars);
}
break;
case 'DELETE':
if ('application/x-www-form-urlencoded' === $this->getContentType())
{
parse_str($this->getContent(), $request_vars);
}
break;
}
... more code ...
}
public function getContent()
{
if (null === $this->content)
{
if (0 === strlen(trim($this->content = file_get_contents('php://input'))))
{
$this->content = false;
}
}
return $this->content;
}
此代碼示例放PUT
DELETE
或請求參數進入$request_vars
陣列。一個限制似乎是表單(如果您使用另一個內容類型標題)必須是'application/x-www-form-urlencoded',一些快速的谷歌搜索證實了這一點。
這麼說之後,我可以通過$ request_vars ['id']來訪問它嗎? – aherlambang 2011-03-21 13:14:59
是的,基本上。您將無法按原樣使用代碼,因爲它是大類的一部分,但它是您所需的模板。 – xzyfer 2011-03-21 21:12:04
我不認爲你可以在全球範圍內可用的數組訪問它,但你可以決定請求類型確定,在這裏看到:Detecting request type in PHP (GET, POST, PUT or DELETE)
我可以檢測到它就好,我想要得到的變種。 – aherlambang 2011-03-21 07:21:31
file_get_contents('php://input')
應該總是給你完整的請求體。請注意,它可能只能讀取一次。更大的問題是DELETE請求是否可能包含一個正文,這似乎是unanswered question,但可能工作。
我想說,在身體發送身份證有點RESTless雖然。相關實體應該被URL稱爲example.com/foo/42
,所以DELETE請求應該說DELETE /foo/42
,而不是DELETE /foo
與請求正文中的id。
那我該如何得到具體的變量名?我必須對字符串進行解析嗎? – aherlambang 2011-03-21 07:27:23
@Equ [是](http://php.net/parse_str)。 – deceze 2011-03-21 07:29:02
正如上面的人所說的,PHP確實有而不是有一個全局變量來快速訪問DELETE
請求中的數據。爲什麼,我不知道;它歷史上可能還沒有被用作GET
和POST
。
您必須使用$_SERVER['REQUEST_METHOD']
檢查請求類型,然後使用php://input
流檢索整個正文並從中提取數據。如果您希望保持類似的代碼外觀(假設您使用的是$_POST
和$_GET
),則可以創建一個函數在每個請求上執行此操作並將其保存在名爲$_DELETE
的全局變量中。你甚至可以修補你的PHP來做到這一點,並編譯你自己的PHP版本,但這當然會讓試圖在另一個PHP安裝上運行你的代碼的人感到困惑:)
- 1. PHP得到一個PHP會話變量
- 2. 商店都得到一個變量PHP
- 3. jQuery刪除一個URL變量
- 4. 獲得一個PHP變量的jQuery
- 5. PHP:刪除所有,但一個查詢字符串變量
- 6. 如何從PHP會話數組中刪除一個變量
- 7. 得到父ID到一個變量
- 8. 刪除變量
- 9. 刪除變量
- 10. PHP從變量中刪除「引用」。
- 11. 從PHP變量中刪除空數組
- 12. 刪除會話變量在PHP
- 13. 得到一個NSString變量的值
- 14. 得到變量從另一個類SpriteKit
- 15. 如何在PHP文件得到定義一個變量
- 16. PHP獲得價值,然後把它放到一個變量
- 17. 如何獲得JavaScript函數的數據到一個PHP變量
- 18. 得到一個變量在PHP中從無形式的HTML
- 19. 如何獲得一個PHP變量回到android應用程序?
- 20. 查找總價值得到一個變量在PHP
- 21. PHP通過變量值形式一個PHP到另一個PHP
- 22. PHP變量的jQuery通過並得到它$ _GET到另一個PHP頁面
- 23. 把一個變量到一個變量
- 24. PHP刪除第一個零
- 25. 刪除一個php文件
- 26. CakePHP - 保存一個會話變量刪除另一個
- 27. Flash as2添加到一個變量,並刪除一個影片剪輯
- 28. Getopt ::長得到一個空格到一個變量字符串
- 29. 將一個javascript變量發佈到PHP。
- 30. 分配一個php變量到sessionStorage var
它是http:// stackoverflow的副本。 com/questions/1405505/access-delete-from-jquery-in-php,但我不知道答案是否對你有幫助。 – 2011-03-21 07:21:36
檢查出來,不幫助我 – aherlambang 2011-03-21 07:23:34
你可以在'$ _GET'中獲得變量。如果該方法不是'GET'並且'POST'請求將以'GET'方法發送 – 2011-03-21 07:28:37