ホームコントローラーにログイン/ログアウトメソッドがあります。さまざまなコントローラーによって生成されるすべてのページに、ユーザー名とパスワードのテキストボックスがあります。
すべてのビューに共通の jquery ファイルがあり、ajax を使用して、任意のページからユーザー名とパスワードを Home コントローラーのログイン/ログアウト メソッドに投稿します。ただし、これらのページは Home コントローラーではなく別のコントローラーによって生成されているため、これは機能していないようです。firebug を確認すると、Ajax スクリプトに記載されている URL がそのページのコントローラーに追加されており、実際のリダイレクトは行われていません。
このようなシナリオでは、通常、自作のヘルパーを使用することをお勧めします。しかし、それをjquery ajax経由でどのように使用できるかわかりません。
ホームコントローラー
function validate_login_user()
{
$this->load->model('model');
if ($this->sristi_model->validate_login())
{
$data = array (
'username' => $this->input->post('username'),
'is_logged_in' => true
);
$this->session->set_userdata($data);
$this->load->view('includes/logged_in.php');
//return true;
}else{
$this->load->view('includes/loginerror.php');
//return true;
}
}
JavaScript
$('#sitelogin').on('click', '.login', function(){
var username = $('#username').val();
var password = $('#password').val();
if (username == "" || password == ""){
$('#error').fadeIn(200).delay(1000).fadeOut(1000);
return false;
}else if(username !== undefined && password !== undefined)
{
$.ajax({
url:"home/validate_login_user",
type:'POST',
data:{username:username,password:password},
cache:false,
success:function(msg){
$('#sitelogin').html(msg).hide().fadeIn(800);
$('#loginerror').delay(2000).fadeOut(1000);
}
});
return false;
}else{
return false;
}
});
製品コントローラーからログインしようとすると、Firebug でこれが表示されます
URL: POST validate_login_user
localhost/ci/product/categories/localhost/ci/home/validate_login_user
Status: 500 Internal Server Error
Domain: localhost
Size: 1.6 KB
Remote IP: [::1]:80
何か見つけたら教えて...