【问题标题】:Codeigniter submit form when accessing URL访问 URL 时 Codeigniter 提交表单
【发布时间】:2016-04-27 06:09:31
【问题描述】:

当我单击提交按钮时,我有一个可以完美运行的表单。 我想要的是,如果我在 URL 中添加参数,它会在访问 URL 时自动提交表单。

我的表单如下所示:

<form id="form_group_data" name="form_group_data"  method="post" class="form-horizontal" action="<?php echo site_url('admin/group/add')?>">
   <p>
   <div class="form-body">
      <div class="form-group">
         <label class="col-md-2 control-label" for="name">Name<span class="required"> * </span></label>   
         <div class="col-md-4">
            <input id="name" class="form-control" type="text" name="name" required="required" value="">
         </div>
      </div>
      <div class="form-group">
         <label class="col-md-2 control-label" for="firstname">Firstname<span class="required"> * </span></label>   
         <div class="col-md-4">
            <input id="firstname" class="form-control" type="text" name="firstname" required="required" value="">
         </div>
      </div>
      <input type="submit" value="Ajouter" class="btn blue"/>
      <button type="button" class="btn default" onclick="window.location='<?php echo site_url('admin/group')?>'">Annuler</button>
   </div>
   </p>
</form>

如果我手动填写字段并提交它,它会起作用。现在我可以输入这个 URL 并通过 URL 中的参数填充字段,但我希望它也能自动提交,而无需单击提交按钮。

自动填充字段的示例 URL:https://test.ch/admin/user/insert/John/Lennon

有可能吗?可以用 JQuery 吗?

【问题讨论】:

  • 去掉中间人->表格,直接将数据追加到db

标签: javascript php jquery forms codeigniter


【解决方案1】:
  • 检查url参数是否存在
  • 如果是,假设表单中填充了来自 url 的数据,使用 jquery 提交它

将此代码放在结束正文标记之前

<?php 
if(isset(your_url_parameters)) // check if all parameters exist in url
{ ?>

<script type="text/javascript">
    $( document ).ready(function() {
        $("#form_group_data").submit(); //submit the form
    });
</script>

<?php } ?>

【讨论】:

    【解决方案2】:

    如果您有能力填写表单 - 您正在设置此 url - 那么您也可以将此数据发送到已处理表单提交操作的其他 url。因此,与其在填写数据后尝试提交此表单,不如首先使用这些参数将其指向操作 url admin/group/add/other/params/here,然后在该控制器中检查这些参数。但是请注意,在这种情况下,您正在绕过 csrf 保护并打开一个潜在的漏洞。如果您启用了该保护,您最好使用 csrf 令牌以及要发布的数据发布到此端点。

    或者,您可以使用此表单的控制器来检查是否在 url 中设置了参数。您应该能够检查参数以及它们是否已设置(如果您打算这样做,则通过您的验证)执行您通常在表单提交时执行的操作。

    if (isset($this->uri->segment(4)) && isset($this->uri->segment(5)) {
        // Do the work here - add to db, etc. Alternatively call the function 
        // that is supposed to do the work and pass these parameters in some way.
        $this->load->model("my_user_model");
        $this->my_user_model->add_user($this->uri->segment(4), $this->uri->segment(5));
        redirect("success/url");
    }
    

    这只是一个例子。您需要清理和验证您处理的任何表单数据,因此在这种情况下,my_user_model->add_user 需要执行此操作,或者理想情况下您应该在使用 CI 的表单验证库的模型之前执行此操作。

    我强烈建议您查看 form validation 文档作为如何使用 CI 的内置功能处理表单和提交的数据的一个很好的示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      • 2013-08-24
      • 2015-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多