codeigniter中的URL加密

时间:2012-02-07 14:10:16

标签: codeigniter

我想加密codeigniter中的网址。

我的最终目标是加密域名后的所有内容。 example.com/controller/function/itemid 至 example.com/sdfsdfsff/sdafaergdfsd/dfesDEWrewF

我可以在我的控制器中使用ci的“加密”库来加密/解密itemid,但有没有其他方法可以在网址中包含所有内容?

1 个答案:

答案 0 :(得分:0)

使用钩子的替代方法可能只是覆盖CI_URICI_Config类。将URI段加载到段数组中时,它应该解密它们(可能在_set_uri_string()方法中)。然后它应该在一个被覆盖的CI_Config类(_uri_string()方法,特别是)中加密段。

这是一个(未经测试的)样本供您欣赏:

<?php
// application/core/MY_URI.php
class MY_URI extends CI_URI {
    function _set_uri_string($str)
    {
        parent::_set_uri_string($str);
        $CI =& get_instance();
        $CI->load->library('encrypt');
        $parts = explode('/', $this->uri_string);
        foreach ($parts as &$part)
        {
            if ($part) $part = $CI->encrypt->decode($part);
        }
        $this->uri_string = implode('/', $parts);
    }
}

// application/core/MY_Config.php
class MY_Config extends CI_Config {
    protected function _uri_string($uri)
    {
        if ( !is_array($uri))
        {
            $uri = explode('/', $uri);
        }

        $CI =& get_instance();
        $CI->load->library('encrypt');
        foreach ($uri as &$part)
        {
            if ($part) $part = $CI->encrypt->encode($part);
        }

        return parent::_uri_string($uri);
    }
}