【问题标题】:Codeigniter routing with encoded params带有编码参数的 Codeigniter 路由
【发布时间】:2011-03-03 21:02:13
【问题描述】:

我在 config/routes.php 中设置了以下路由规则:

$route["add/url/(:any)"] = "add/url/$1/$2/$3";

除非参数具有编码值,否则这工作正常,因此以下工作:

http://site.com/add/url/true/www.google.co.uk/Google/

但事实并非如此:

http://site.com/add/url/true/http%3A%2F%2Fwww.google.co.uk/Google/

似乎没有到达控制器功能页面只是说'找不到对象!'。我该怎么办?

【问题讨论】:

  • 问题出在编码的 / 上。最后我决定在控制器方法中对参数进行base64解码。
  • 另一种方法是将值作为查询字符串传递

标签: php codeigniter routes


【解决方案1】:

试试这个

$route["add/url/[A-Za-z0-9/%]"] = "add/url/$1/$2/$3";

$route["add/url/([\w][%])"] = "add/url/$1/$2/$3";

我不太确定第二个,但第一个代码有效。

请阅读维基百科中的文章Regular Expression,了解更多关于正则表达式的信息。

【讨论】:

  • 不幸的是,两者都不起作用,我无法找到正则表达式解决方案
【解决方案2】:

我找到的两个解决方案:

  1. base64 控制器方法中的参数和解码(确保替换 +、=、/)
  2. 将值作为查询字符串传递

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 2013-10-29
    • 1970-01-01
    • 2013-03-16
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多