CodeIgniter使用Auto Crumb helper在URL上加密密钥

时间:2012-06-25 09:08:04

标签: codeigniter helpers

我使用自动CodeIgniter 2.1 + Auto Crumb助手,我得到from here

screenshot

例如,我编辑联系人页面的链接是http://localhost/caster/contact/edit_contact/13/213bcf

13 是联系人ID, 213bcf 加密联系人 ID,以防止用户仅更改网址中的联系人ID。< / p>

所以我的面包屑现在显示无效的网址,如上图所示。所需的面包屑为Contact \ Edit Contact。如何修复或阻止此问题?

感谢。

1 个答案:

答案 0 :(得分:1)

目前有一个错误(或者可能是它的设计,但它似乎很愚蠢)与autocrumb帮助器,这意味着正则表达式模式替换不会运行,除非特定细分中包含连字符(-)或下划线(_)。

通常使用配置变量$config['strip_regexp']就足以满足您的要求了,但不是这种情况。

在这种情况下(假设URL末尾没有更多参数),您可以执行以下操作:

$ci = get_instance();
if( preg_match( '#\d+/[a-z0-9]+$#i', $ci->uri->uri_string() ) ) {
    $config['exclude_segment'] = $config['exclude_segment'] + array(
        $total = $ci->uri->total_segments(),
        $total-1
    );
}

这应该插在$config['exclude_segment'] = array();文件中的app/config/breadcrumb.php下方,基本上表示网址是否以numbers/letter-number-pattern结尾,然后从包面条中删除网址的最后两个网段。

它不太理想,但错误需要先修复。显然,这假设您的网址结构不会发生变化。您可以在if中添加其他条件,以确保它只出现在您想要的页面上。