使表单URL提交看起来像路由而不是查询字符串

时间:2017-09-15 17:27:55

标签: php html codeigniter

有没有办法在表单提交时更改默认URL格式?

这就是我所拥有的:

<form action="<?php echo base_url('some_controller/some_method'); ?>" method="GET">
    <select name="foo">
        <option value="1">bar</option>
        <option value="2">Wubba lubba dub dub</option>
    </select>
    <button type="submit">Send</button>
</form>

当我点击按钮时,网址会变为:(不想要

localhost/some_controller/some_method?foo=2

有没有办法让它像下面那样? (预期结果

localhost/some_controller/some_method/2

仅使用PHP / Codeigniter是否可以实现?或者也许是HTML?
(可以在没有javascript且没有htaccess的情况下完成吗?)

我认为使用form_open方法没有任何区别。

1 个答案:

答案 0 :(得分:0)

这是因为您的方法是GET。如果您将方法更改为POST,则信息将从网址中消失。但是,根据您的观点,它会有不同的副作用,无论好坏:

  1. 如果在codeigniter中打开, Post会将其置于CSRF保护的范围内。
  2. 如果导航回到POST提交结果的页面,您将获得&#34;您是否要重新提交?&#34; - 来自浏览器的消息类型。
  3. 唯一的另一种选择是通过javascript在后台执行ajax请求。