codeigniter中的URL加密

codeigniter中的URL加密,codeigniter,Codeigniter,我想在codeigniter中加密url 我的最终目标是加密域后的所有内容。 example.com/controller/function/itemid 到 example.com/sdfsdfsff/sdafaergdfsd/dfesdewref 我可以在我的控制器中使用ci的“加密”库来加密/解密itemid,但是是否有其他方法来加密url中的所有内容?使用钩子的替代方法可能只是覆盖ci\u URI和ci\u Config类。将URI段加载到段数组中时,它应该解密它们(可能在\u set\

我想在codeigniter中加密url

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


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

使用钩子的替代方法可能只是覆盖
ci\u URI
ci\u Config
类。将URI段加载到段数组中时,它应该解密它们(可能在
\u set\u URI\u string()
方法中)。然后,它应该加密被重写的
CI\u Config
类中的段(特别是
\u uri\u 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);
    }
}

你可能想看看钩子。