Шифрование URL в коде - PullRequest
       1

Шифрование URL в коде

1 голос
/ 07 февраля 2012

Я хочу зашифровать URL в codeigniter.

Моя конечная цель - зашифровать все после домена. example.com/controller/function/itemid в example.com/sdfsdfsff/sdafaergdfsd/dfesDEWrewF

Я могу использовать библиотеку ci "encrypt" в моем контроллере, чтобы зашифровать / расшифровать itemid, но есть ли другой способ сделать encyrtpt в URL?

1 Ответ

0 голосов
/ 08 февраля 2012

Альтернативой использованию хуков может быть просто переопределение классов CI_URI и CI_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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...