2011-12-24 34 views
2

ウェブサイト全体では、ページを表示する前にログインする必要があります。ユーザーがログインしていない場合、ユーザーはログイン/登録ページにリダイレクトされます。ログイン後元のページにリダイレクトする(Codeigniter)

問題:http://www.domain.com/listings/1234ようなURL内の型にログインしていないユーザーは、彼はしかし、ページとの相互作用からユーザーを防ぐ暗くページと、そのページが表示されます(jQueryのものではなく、問題)と、(タンク認証)ログインページhttp://www.domain.com/loginへのリンクを持つポップアップモーダルボックスです。

ログインページからログインすると、ユーザーはログイン後の通常のページ、つまりhttp://www.domain.comにリダイレクトされますが、そのページには変数1234が渡されます。短いで

:私は、ログインしていない、まだhttp://www.domain.com/loginにリダイレクトさませhttp://www.domain.com/listings/1234でウェブサイトに入ったが、代わりにhttp://www.domain.com/listings/1234上に残り、とモーダルボックスを示すことが、ユーザが欲しいですログインページhttp://www.domain.com/loginにログインします。ログインすると、彼はログイン後に得た通常のページの代わりにhttp://www.domain.com/にリダイレクトされ、変数1234が渡されます。

Codeigniterを使用してこれを行うにはどうすればいいですか?

は、これは私が今持っているものです:

掲載コントローラ

function index(listing_id) { 
    $this->load->module('auth'); 
    if(!$this->auth->tank_auth->is_logged_in()) { 
     redirect('login'); 
    } 

    // Some calls to database etc here... 

    $this->load->view('listings', $data); 

} 

答えて

2

あなたの質問を行うことができるいくつかの方法があります。うまくいけば、このソリューションは、これを達成するためのいくつかのアイデアを与えるだろう。

以下の解決策は、jquery UIダイアログを使用して、.ajaxというモーダルおよびjqueryを表示し、ログインフォームの送信を処理します。ユーザーがログインしていない場合

条件付きで</body>タグの前に、あなたのページの一番下にこのコードを置く。

<?php if($this->auth->tank_auth->is_logged_in()){ ?> 
    <div id="dialog-wrap" class="modal" > 
    <?php echo $this->load->view('login_form'); ?> 
    </div> 
    <script> 
     $('#dialog-wrap').modal({ 
      modal: true, 
      autoOpen: true, 
     }); 

     $('#login-form').submit(function(){ 
      //use .ajax to submit login form and check credentials. 
      $.ajax({ 
       type: 'POST', 
       url: <?php echo base_url(); ?>"login.php", 
       data: "username="+$('username').val()+'&password='+$('password').val(), 
       dataType: 'json', 
       success: function(returnData){. 
        if(returnData.status){ 
         //close modal box 
        }else { 
         //display message that login failed. 
        } 
       } 
      }); 

     }); 
    </script> 
?> 

あなたのAJAXのログインコントローラあなたはそれがこの方法を行う

function login(){ 

    //Use tank auth to validate login information. 

    if(authentication is successful) { 
    $return_data = array(
     'status' => true, 
     'msg'   => 'Login Successful' 
    ); 
    }else { 
     $return_data = array(
     'status' => false, 
     'msg'   => 'Login failed' 
    ); 
    } 

    //Use echo instead of return when you are sending data back to an jquery ajax function. 
    echo json_encode($data); 
} 

場合codeigniterのリダイレクトに頼る必要はありません。すべてがajaxによって処理されます。

これは、これをどのように処理するかのアイデアを与えることを願っています。

+0

このコードは、元の投稿に表示されているコードスニペットと同じことをしますか?元の投稿をより詳細な内容で更新しました。ありがとう! – Nyxynyx

関連する問題