【问题标题】:PHP: Navigate to url with post data id (jquery and codeigniter)PHP:使用发布数据 id 导航到 url(jquery 和 codeigniter)
【发布时间】:2017-09-21 00:51:03
【问题描述】:

我有一个带索引功能的控制器如何需要一个 id:

function index()
    {
       if ($this->input->post('id')) {
          //functions like 
          $data['donneesArticle'] = $this->ModelArticle->getArticle($this->input->post('id'));
          $this->load->view('ArticleDetail', $data, TRUE);
    }
}

以及所有产品的其他页面中的列表:

<a type="button" data-id="'.$object->CodeArticle.'" class="btn btn-xs green bAfficherArticle">Show</a>

我从我的 jquery 函数中得到这样的 id

$('.bAfficherArticle').click(function (e) {
        var yIdArticle = $(this).attr("data-id");
/* Code to navigate */
    });

但我不能详细说明提交 id

注意:get 函数可以正常工作,但我需要删除所有 get with post

谢谢

【问题讨论】:

  • .attr("data-id");或 .data('id') 代替 .attr("data-idArticle")
  • if (isset($this-&gt;input-&gt;post('id'))) isset 将无法与 codeigniter 的输入法一起使用,因此请将其更改为 if ($this-&gt;input-&gt;post('id'))
  • 你是用 jQuery 发送 id 吗?请在下面查看我的答案。需要检查您如何将 id 发送到您的控制器。

标签: javascript php jquery codeigniter


【解决方案1】:

您可以使用 GET 来执行此操作。您可以使用 URI Segment 传递 id 并在控制器中获取它,例如 $this->uri->segment()

在你的 jquery 中添加这个来导航:

 window.location.href = '<?= base_url() ?>/YOUR_CONTROLLER/YOUR_FUNCTION/'+yIdArticle;

并在您的函数中执行以下操作:

function index() {
    $articleId = $this->uri->segment(3); 
    //or $articleId = $this->uri->segment(4); depends on your structure

       //Do your checks here
       if (isset($articleId) && !empty($articleId)) {
          //functions like 
          //Do your functions here
    }
}

【讨论】:

  • THX 对于您的解决方案只是另一个问题,我没有 SQL INJECTION 的风险?
  • 如果您在模型中使用 Active Record,它将自动转义。否则,您必须转义您的数据。但始终建议检查和过滤您收到的数据。即使您使用 POST,如果您不遵循表单验证规则,仍然存在注入的可能性。不要将 POST/GET 与 SQL INJECTION 混合使用。
【解决方案2】:

我可以看到您没有使用正确的属性名称。这应该是这样的:

查看链接

<?php echo '<a type="button" data-id="'.$object->CodeArticle.'" class="btn btn-xs green bAfficherArticle">Show</a>'; ?>

脚本是:

$('.bAfficherArticle').click(function (e) {
    var yIdArticle = $(this).attr("data-id");
/* Code to navigate */
});

这应该可以工作

【讨论】:

  • 感谢您的回答,但我的问题是如何使用 post 方法导航到 url,它可以与 get 方法正常工作,但我有 SQL INJECTION 的风险
  • @marwencomunik 如果您不清理输入,则使用GETPOST 都没关系。 Codeigniter 的query builder 为您转义输入,目前还没有已知的漏洞利用。
猜你喜欢
  • 2012-06-10
  • 2011-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 2017-01-21
相关资源
最近更新 更多