1

ここに私のroutes.phpファイルのセクションがあります

$route['admin/login'] = 'admin_login';
$route['admin/login/(:any)'] = 'admin_login/$1';
$route['admin/logout'] = 'admin_login/logout';
$route['admin'] = 'admin_login';
$route['admin/(:any)'] = 'admin_login/$1';

コントローラーのvalidate_login()メソッドのセクションAdmin_Login

if(! $this->form_validation->run()) {
    $messages = validation_errors('<div class="alert error">',"</div>\r\n");
    $this->session->set_flashdata('messages', $messages);
    $this->session->keep_flashdata('messages');
    /* will redirect to admin_login/index */
    redirect('admin/login');
    return FALSE;
}

コントローラーのindex()メソッドのセクションAdmin_Login

$data = array();
$data['messages'] = $this->session->flashdata('messages');
$this->load->view('admin/login', $data, true);

「admin/login.php」ビューのセクション

<div class="message_box">
<?php echo $messages; ?>
</div>

オブジェクトuserdataの_$this->session

 [userdata] => Array
        (
            [session_id] => 1da231df3eb2ef90257b173bf34aa308
            [ip_address] => 192.168.1.135
            [user_agent] => Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
            [last_activity] => 1370231465
            [user_data] => 
            [flash:new:messages] => 
The Username field is required.


The Password field is required.



        )

シナリオ:

ログインすると、ユーザー入力が に渡されadmin/validate_loginます。空の資格情報で意図的にログインします。検証エラーはビュー ファイルで予期されます。しかし、それは表示されません。ルートがこのバグを引き起こしているという予感があります。これについて何か助けはありますか?

解決済み:

セッション クラスはフラッシュデータを適切にエスケープしません。データを適切に表示するために、base64 でエンコードおよびデコードされます。

4

0 に答える 0