2012-03-03 73 views
0

我正在研究各種API。它有點像RESTful API,目前還沒有put/delete。與GET/POST一起工作或者希望是會的。PHP如何在不復制代碼庫的情況下處理_GET/_POST

我的問題,目前我不希望如果可能的話,其中一個行爲基於POST和基於GET一個行爲而雙方都從字面上相同的代碼,否則有鏡子的代碼。

因此,我想弄清楚的是,我可以使用哪種解決方案來處理POST/GET數據,我可以使用相同的代碼庫,但不必爲$ _GET和另一個$ _POST創建一個副本?

我知道我可以這樣做

if($_POST) 
{ 
//then work with the post data 
} 
if($_GET) 
{ 
//then work with the get data 
} 

但問題是顯而易見的這種方法,也許我只是沒有想到遠遠不夠框外,所以我不知道..想法?

+1

如果你要正確對待他們的代名詞然後'$ _REQUEST'會是一個更好的選擇(?)。隨着當前配置它通常是'$ _REQUEST = array_merge($ _ POST,$ _ GET);' – mario 2012-03-03 09:52:28

回答

5

是的,您可以爲此創建一個通用函數。

function doOperation($var) 
{ 
    //then work with the var data 
} 

if(isset($_POST)) 
{ 
    doOperation($_POST); 
} 

if(isset($_GET)) 
{ 
    doOperation($_GET); 
} 
+0

兩個'$ _GET'和'$ _POST'當我用這個簡單的腳本進行設置:'',即使沒有發佈數據並且沒有使用查詢字符串。 – 2012-03-03 10:39:06

+0

@SalmanA在沒有isset(),$ _POST ['something']的情況下使用特定數據。 – Secko 2012-03-03 10:45:22

3

您可以使用$_REQUEST

+0

但是,$ _REQUEST也包含cookie數據,因此您可能想要阻止該數據。閱讀:http://devlog.info/2010/02/04/why-php-request-array-is-dangerous/ – Andy 2012-03-03 09:56:09

+2

@Andy:沒錯,但PHP手冊頁面上的評論表明,最近的PHP禁用的版本Cookie部分默認。 – casablanca 2012-03-03 09:57:39

+0

啊,是的,你是對的。然後+1! – Andy 2012-03-03 10:00:13

0

這很簡單。
該代碼基於POST行爲,並且基於GET的行爲永遠不會相同。

  • GET用於從服務器請求數據。
  • POST用於修改服務器上的數據。

這是不同的代碼,他們從來沒有干涉

2

定義接受的參數數組的函數:

function process($params) 
{ 
    //then work with the params 
} 

然後調用,像這樣:

if(isset($_POST)) 
{ 
    process($_POST); 
} 
if(isset($_GET)) 
{ 
    process($_GET); 
} 
+0

兩個'$ _GET'和'$ _POST'當我用這個簡單的腳本設定:' 2012-03-03 10:38:07

1

您可以使用$_SERVER["REQUEST_METHOD"]來確定您的腳本是通過HTTP GET還是POST方法調用的。現在,假設你已經編碼你的整個腳本中使用$_GET您可以複製所有變量後得到的變量:

if($_SERVER["REQUEST_METHOD"] == "POST") { 
$_GET = $_POST; 
} 
+0

兩者的組合呢?你可以發佈到像網站/ page.php?id = 1的網址 – dynamic 2012-03-03 11:23:45

相關問題