1

Cookie が暗号化されないのはなぜですか? 私はそれらをプレーンテキストとして見ており、プレーンテキストであるため、簡単に編集できます:O

私は使用しています:

    $config['sess_cookie_name']     = 'sess_id';
    $config['sess_expiration']      = 0; //24hours -> 8640
    $config['sess_expire_on_close'] = TRUE;
    $config['sess_encrypt_cookie']  = TRUE;
    $config['sess_use_database']    = TRUE;
    $config['sess_table_name']      = 'session';
    $config['sess_match_ip']        = FALSE;
    $config['sess_match_useragent'] = TRUE;
    $config['sess_time_to_update']  = 3000000000;
$config['encryption_key'] = 'dfs78fh834fh83h4fhhsdifsihdfh99inf83kjwnefkjwenfknwkejnfowejnf82';

Cookie を設定するには、次のようなフックを使用します。

function setUserCountry($country){

    $CI =& get_instance();
    $CI->input->set_cookie(
      array(
        'name'=>'user_country',
        'value'=>str_replace(array('"',"'",">","<"),"",$country),
        'expire'=>'8650000000',
        'secure'=>TRUE
        ));
    }

フックは pre_controller と呼ばれます:

$hook['pre_controller'] = //run my cookie hook setUserCountry() method

これは、Cookie が作成されると次のようになります。

ここに画像の説明を入力

4

2 に答える 2

4

codeigniter で Cookie を暗号化するには、次の config.php ファイルを変更します。

$config['sess_encrypt_cookie']  = FALSE;

この行を

$config['sess_encrypt_cookie']  = TRUE;

また、暗号化キーを設定します

$config['encryption_key'] = "";
于 2013-04-27T10:06:34.017 に答える
1

したがって、配列を set_cookie() $name パラメータに、secure = true でフィードしています。

if ($secure == FALSE AND config_item('cookie_secure') != FALSE)
        {
            $secure = config_item('cookie_secure');
        }

system/core/Input.php 内のこのコードは問題を引き起こします。したがって、グローバル cookie 暗号化をオフにするか、配列で $secure を除外しない限り、機能するはずです。

EDIT
Cookieが設定されていないため、codeigniter は問題を正しく指摘しています

ただし、Cookie ヘルパーをロードする必要があります。また、代わりに post_controller_constructor フックを使用してください。 http://ellislab.com/codeigniter/user-guide/general/hooks.html

また、このまま使ったほうがいいのではないですか?http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-base-Classes-Keeping-it-DRY を開き、Cookie を拡張コア コントローラーに追加します。

于 2013-04-27T14:39:38.190 に答える