使用表格&amp ;;传递GET参数Codeigniter到控制器

时间:2011-08-02 23:07:05

标签: php model-view-controller codeigniter

我有一个html表单,例如他的行为是“exmaple.com/mail.php?name=dan”。

如何将此参数传递给Codeigniter的控制器?

codeigniter中的'action'将转至 - example.com/mail,我不能exmaple.com/mail?name=dan,对吗?那我该怎么办? (并且......我不能使用Ajax: - ))

4 个答案:

答案 0 :(得分:2)

有几种解决方案。你可以这样做$name=$this->input->get("name"),但是如果你想保留Codeigniter的哲学,你可以使用Javascript将表单的动作URL更改为/ mail / dan。在这种情况下,您可以使用以下代码访问数据:$name=$this->uri->segment($number)。你的情况下的$ number是2,因为“dan”在第二个URI的段中。

注意:如果您使用第二个方法,请记住,codeigniter的默认行为是从URI的第一个和第二个段自动调用控制器/方法。 (http://domain.com/controller/method)为了防止出现这种情况,您可以编辑application / config / routes.php文件。有关详细说明,请参阅oficial guide

答案 1 :(得分:1)

您可以将GET参数作为隐藏输入元素发出,即:

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

HOWEVER ,在执行此操作时,请记住两个非常重要事项:

  1. 你绝对必须清理你要在页面上发出的CGI参数(如果不这样做会导致XSS漏洞)。
  2. 与任何其他参数一样,您不能相信此值未被更改(因此,请勿使用'name = dan'来验证dan!)。
  3. 由于我从您的示例推断出您使用它来识别和验证用户,我强烈建议您使用浏览器cookie(以及编码此数据校验和的数字签名,以便如果它被改变,你可以很容易地识别它是无效的。)

答案 2 :(得分:0)

您还应该将查询字符串变量设置为true:

在您的CodeIgniter配置中;

$config['enable_query_strings'] = TRUE;

但请记住,这会改变您的codeigniter应用程序的行为方式。 See more here

答案 3 :(得分:0)

为什么不能简单地在HTML表单中添加隐藏字段并将其与表单一起作为POST数据发送?

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

当然,您可以使用当前的任何值动态替换值部分。