PHP: CodeIgniter и SSL поддержка

В течение трёх месяцев я пытался найти элегантное решение для некоторых проблем связанных с безопасностью сайта. В том числе моменты связанные с протоколами — например переключение протокола с http:// на https:// для некоторых страниц сайта. Пришлось изрядно полазить по форумам.

Одним из решений является использование .htaccess файла и mod_rewrite для реврайтинга URL-ов. Но как показала практика , это решение не самое лучшее, так как через месяц Apache начал хандрить и всё порушилось, так что пришлось искать другой вариант решение проблемы.

И так , если вы используете CI , то зада очень проста в директории application/helpers вы создаёте новый helper ( если не знаете , как добавить Helper , читайте тут ) — например ssl_helper.php и записываете в него ниже следующий PHP код:

if (!function_exists('force_ssl'))
{
    function force_ssl()
    {
        $CI =& get_instance();
        $CI->config->config['base_url'] =
                 str_replace('http://', 'https://',
                 $CI->config->config['base_url']);
        if ($_SERVER['SERVER_PORT'] != 443)
        {
            redirect($CI->uri->uri_string());
        }
    }
}
function remove_ssl()
{
    $CI =& get_instance();
    $CI->config->config['base_url'] =
                  str_replace('https://', 'http://',
                  $CI->config->config['base_url']);
    if ($_SERVER['SERVER_PORT'] != 80)
    {
        redirect($CI->uri->uri_string());
    }
}

Далее в любом контроллере подгружаете Helper и вызываете его.

force_ssl();

В тех контроллерах, в которых вы не хотите, чтобы использовался данный Helper , вставьте ниже идущий код:

if (function_exists('force_ssl')) remove_ssl();

Вот впринципе и всё.

Популярность: 33%

Можно также почитать:

Написать комментарий

О блоге

сoderx.in - это блог о Web разработке, Web дизайне и программировании для начинающих и профессионалов в своём деле, а также о новостях и новинках в сфере IT. Практические советы и рекомендации о том, как создать, защитить и раскрутить свой сайт.