【问题标题】:Which is better? Passing parameters from controller or using uri?哪个更好?从控制器传递参数或使用uri?
【发布时间】:2014-03-12 10:20:18
【问题描述】:

我需要制作一个动态页面,类似于:example.com/nameofbook/1 - 其中 1 是页面编号。

这是 2 个参数。

我知道两种方法。 1.在控制器中我有功能页($book, $page) 2. 从链接中获取带有 this->uri->segment 的参数。

我应该使用什么以及为什么以及哪个更安全?

无论如何,当我使用带有 2 个参数的控制器时,CSS 代码不会加载。当我使用 1 时,它会加载。 我的路线类似于$route['page/(:any)/(:any)']='main/page/$1/$2'

提前致谢。

【问题讨论】:

  • 请注意,您也可以使用表单执行此操作,这样您就不会暴露任何内容 - 只需将书名和页码作为隐藏表单字段传递,而不是下一页链接,您有一个按钮或图形.但无论哪种方式,请确保在将数据发送到数据库之前清理/验证数据!

标签: php codeigniter uri


【解决方案1】:

使用 $this->uri->segment 与在控制器中使用参数完全相同。如果参数是 URI 的一部分,无论您是否在方法中定义了它们,参数都将被传递给控制器​​。

即:

page() {
    // This will be an array of passed arguments
    $args = func_get_args();
}

我不知道为什么你的 CSS 不能用一种方法而不是另一种方法加载。 同样从您的 URI 判断,您的路线将不起作用.. 因为“页面”部分不在 URI 中,所以您的 URI 应该是 example.com/page/nameofbook/1

任何一种方式都是“安全的”,您建议的两种方式都没有区别。

【讨论】:

  • 好吧,我不明白路线应该是什么样子。我有 $route['nameofbook/(:any)'] = 'main/nameofbook/$1';哪个有效
  • 如果您不希望页面出现在您的 URI 中,那么您必须为每个可能的 nameofbook 设置一个路由.. 所以它看起来像:$route['nameofbook1/(:num)'] = 'main/page/nameofbook1/$1'; $route['nameofbook2/(:num)'] = 'main/page/nameofbook2/$1'; etc...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-13
  • 1970-01-01
  • 2018-12-20
  • 1970-01-01
  • 2013-08-15
  • 2011-02-27
  • 1970-01-01
相关资源
最近更新 更多