Как сделать так, чтобы логин и регистрация были в режиме ssl? - PullRequest
1 голос
/ 17 ноября 2010

Я использую CodeIgniter на Windows 7 вместе с Wamp.Я сгенерировал самозаверяющий сертификат и все остальное, что нужно для запуска сайта по https.Мой сайт отлично работает в режиме SSL.Проблема в том, что я хочу, чтобы моя страница входа и регистрации была в режиме SSL.В CI мы можем настроить только один URL, например:

$config['base_url'] = "https://localhost/abc";

Я не хочу запускать весь свой сайт в режиме SSL.Как мне этого добиться?Я прочитал следующую ссылку:

/842214/kak-ya-mogu-zastavit-codeigniter-zagruzhat-opredelennye-stranitsy-ispolzuya-ssl

Но это не решило ни одну из моих проблем.Я не хочу дублировать всю папку на моем веб-сайте, о которой говорит человек.Я хочу сохранить те же данные сеанса и куки для http, а также для https.Могу ли я жестко закодировать страницы, которым нужен SSL, в конструкторе моего контроллера?И если будет получен запрос для этой защищенной страницы на http, я должен перенаправить на https.Этот подход действителен или мне нужно работать над ним?Если есть какое-либо правильное и элегантное решение, пожалуйста, дайте мне знать.

Ответы [ 2 ]

3 голосов
/ 19 ноября 2010

У меня была такая же проблема.В моем случае мне пришлось использовать только SSL на панели управления.

Я решил эту проблему, переписав URL-помощник:

function base_url($flag = true)
{
    $CI = CI_Controller::get_instance();
    if (strpos(current_url(), '/cp/') and $flag) {
        return str_ireplace('http://', 'https://', $CI->config->slash_item('base_url')).'index.php/';
    }
    return $CI->config->slash_item('base_url');
}

В этом случае «/ cp /» означает «панель управления".Я был вынужден сделать это таким образом, потому что другие способы (такие как добавление secure_base_url к config.php или другим помощникам SSL) не работали для меня.

Дополнительный параметр $flag предназначен для изображений, CSSи файлы JS, которые должны быть загружены в панель управления.Используйте base_url(false) в этих случаях, поскольку https://www.example.com/**index.php**/image.png является неправильным адресом для файла image.png.

Вы можете сделать то же самое для своего веб-сайта.

Надеюсь, это поможет.

2 голосов
/ 17 ноября 2010

с использованием файла .htaccess было бы моим лучшим предположением

RewriteRule ^my-account\/?(.+)?$ https://mydomain.com/my-account/$1 [NC,R,L]

это подойдет вам?

...