2011-08-02 36 views
1

我有一個html表單,例如他的動作是「exmaple.com/mail.php?name=dan」。將形式爲&Codeigniter的GET參數傳遞給控制器​​

如何將此參數傳遞給Codeigniter的控制器?

在codeigniter中的'行動'將 - example.com/mail,我不能做exmaple.com/mail?name=dan,對不對?所以我能做什麼? (而且..我不能使用Ajax這個:-))

回答

2

有幾種解決方案。你可以像這樣做$name=$this->input->get("name"),但是如果你想保留Codeigniter的哲學,你可以使用Javascript來將表單的動作url改爲/ mail/dan。在這種情況下,您可以通過以下方式訪問數據:$name=$this->uri->segment($number)。在你的情況下$ number是2,因爲「dan」在第二個URI的段中。

注意:如果您使用第二種方法,請記住codeigniter的默認行爲是自動從URI的第一個和第二個段調用controller/method。 (http://domain.com/controller/method)爲了防止這種行爲,你可以編輯application/config/routes.php文件。有關詳細說明,請參閱oficial guide

+1

我忘記了Codeigniter中有段。 :-)謝謝你的正確答案和其他人(隱藏其好的解決方案,但它不是我想找的..)。 – Luis

1

可以發出GET參數作爲隱藏輸入元素,即:

<input type=hidden name="name_of_parameter" value="value_of_parameter" /> 

無論其,有兩個非常要記住這樣做時重要的事情:

  1. 你絕對必須消毒,你會在頁面上發出(如果不這樣做可能導致XSS漏洞)的CGI參數。
  2. 與其他任何參數一樣,您不能相信這個值沒有被改變(所以,不要使用'name = dan'來驗證dan!)。

由於我從您的示例推斷出您正在使用此識別和驗證用戶,我強烈建議您使用瀏覽器cookie(以及編碼此數據的校驗和的數字簽名,所以如果它被改變了,你可以很容易地識別它是無效的)。

0

您還應該設置查詢字符串變量爲true:

在你笨的配置;

$config['enable_query_strings'] = TRUE; 

但請記住,這會改變您的codeigniter應用程序的行爲方式。 See more here

+0

從CodeIgniter 2.x開始,這已不再需要,因爲GET參數現在默認啓用,並具有單獨的設置「allow_get_array」。 –

0

爲什麼不能簡單地在該HTML表單中添加一個隱藏字段並將其作爲POST數據與表單一起發送?

<input type="hidden" name="name" value="dan" /> 

當然,您可以用您當前擁有的任何值動態替換值部分。

相關問題