2012-02-07 46 views
1

我想加密codeigniter中的url。codeigniter中的URL加密

我的最終目標是加密域後的所有內容。 example.com/controller/function/itemid 到 example.com/sdfsdfsff/sdafaergdfsd/dfesDEWrewF

我可以使用CI的「加密」庫在我的控制器encyrpt /解密的itemid,但有沒有其他辦法要在網址中輸入所有內容?

+1

你可能想看看掛鉤。 http://codeigniter.com/user_guide/general/hooks.html – 2012-02-07 15:00:35

回答

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); 
    } 
}