2012-01-02 2 views
1

i m new в Codeigniter, и я создал систему входа с jquery в codeigniter. но я придерживался проблемы с сеансом. Когда я отправлю логин, я отлично поработаю и создаю сеанс отлично, но когда он будет перенаправлен на следующую страницу после входа в систему, сеанс будет автоматически уничтожен, и он будет постоянно возвращаться на страницу входа в систему.Проблема с сеансом входа в систему aignus (jquery) Codeigniter?

Может ли кто-нибудь помочь, что с этим делать? Мой код ниже

Администратор контроллера

<?php 
class Admin extends CI_Controller { 
    function index() 
    { 
     $data['title'] = 'Admin Panel'; 
     $this->load->helper('auth'); 
     if(is_admin_loggedin(0)){ // Check if is login 
      //To display Dashboard Page 
      $this->load->view('admin/index', $data); 
     }else{ 
      //To display Login Page 
      $this->load->view('admin/login/index', $data); 
     } 
    } 

    function login_action(){ 
     $this->load->model('login_model'); 
     $query = $this->login_model->check_login(); 
     if($query){ 
      $data = array(
       'adminid' => $query[0]['AdminID'], 
       'is_logged_in' => true 
      ); 
      $this->load->library('session'); 
      $this->session->set_userdata($data); 
      print_r($this->session); 
      exit; 
      //redirect('admin'); 
      $success = true; 
      $success_redirect = true; 
      $success_msg = site_url('admin'); 
      $error = false; 
      $error_msg = '';    
     }else{ 
      $success = false; 
      $success_redirect = false; 
      $success_msg = site_url('admin'); 
      $error = true; 
      $error_msg = 'Error, Wrong username or password!'; 
     } 
     $passstring = array(
      'success' => $success, 
      'success_msg' => $success_msg, 
      'success_redirect' => $success_redirect, 
      'error' => $error, 
      'error_msg' => $error_msg 
     ); 

     echo json_encode($passstring); 
    } 
} 
?> 

я создал вспомогательный файл аутентификации для проверки Логин установлен или нет.

auth_helper.php

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

if (! function_exists('is_admin_loggedin')) 
{ 
    function is_admin_loggedin($reval){ 
     // Get current CodeIgniter instance 
     $CI =& get_instance(); 
     // We need to use $CI->session instead of $this->session 
     $adminid = $CI->session->userdata('adminid'); 
     $is_logged_in = $CI->session->userdata('is_logged_in'); 
     if($reval == 1){ 
      return $CI->session; 
     }else{ 
      if(!isset($is_logged_in) || $is_logged_in != true || !isset($adminid) || $adminid != '') 
      { 
       return false; 
      }else{ 
       return true; 
      } 
     } 
    } 
} 
?> 

login_model.php

<?php 
class Login_Model extends CI_Model{ 

    public function __construct() 
    { 
     $this->load->database(); 
    } 

    public function check_login(){ 
     //$this->form_validation->set_rules('username', 'User Name', 'trim|required'); 
     //$this->form_validation->set_rules('password', 'Password', 'trim|required'); 
     //if($this->form_validation->run() == FALSE){ 
      $this->db->where('UserName', $this->input->post('username')); 
      $this->db->where('Password', md5($this->input->post('password'))); 
      $this->db->select('AdminID'); 
      $query = $this->db->get('admin'); 
      if($query->num_rows == 1) 
      { 
       return $query->result_array(); 
      } 
     //} 
    } 
} 
?> 

мой взгляд файл Код

<form action="<?php echo base_url();?>index.php/admin/login_action" method="post" name="LoginAdmin" id="LoginAdmin" > 
         <div class="error-container hide"></div> 
         <div class="login-box-row-wrap corners"> 
          <label for="username">Username:</label><input type="text" id="username" value="" name="username" class="input-1"/> 
         </div> 
         <div class="login-box-row-wrap corners"> 
          <label for="password">Password:</label> <input type="password" id="password" value="" name="password" class="input-1 password"/>  
         </div> 
         <div class="login-box-row corners"> 
          <input type="checkbox" name="remember" id="field-remember"/> <label for="field-remember">Remember me?</label> 
          <input type="submit" name="submitfrm" value="Login" id="submit"/> 
         </div> 
         </form> 
<script type="text/javascript" language="javascript"> 
    $(document).ready(function(){ 
     var LoginID = '#LoginAdmin'; 
     $(LoginID).submit(function(){ 
     var errorselector = LoginID+' .error-container'; 
     $(errorselector).html('').hide(); 
     var username = $('#username').val(); 
     var paossword = $('#password').val(); 
     var isValid = 0; 
     var errmsg = ''; 
     if(!checkblank(username) || !checkblank(paossword)){ 
      errmsg = 'Please fill all the fields.'; 
      isValid = 1; 
     } 
     if(isValid == 0){ 
      $('.loader').show(); 
      var urlred = $(this).attr('action'); 
      $.ajax({ 
       type: "POST", 
       url: urlred, 
       data: $(this).serialize(), 
       dataType: "json", 
       success: function(msg){ 
        console.log(msg); 
        $('.loader').hide(); 
        if (msg.success == false && msg.error == true) { 
         if(msg.error_msg != ''){ 
          errormsg = msg.error_msg; 
         }else{ 
          errormsg = 'Error, Something Worong'; 
         } 
         $msgdis = '<div class="login-box-error-small corners"><p>'+errormsg+'</p></div>'; 
         $(errorselector).html($msgdis).slideDown('slow'); 
        }else if (msg.success == true && msg.error == false) { 
         if(msg.success_redirect == true){ 
          window.location = msg.success_msg; 
         }else{ 
          $msgdis = '<div class="login-box-succes-small corners"><p>'+msg.success_msg+'</p></div>'; 
          $(errorselector).html($msgdis).slideDown('slow'); 
         } 
        } 
        $(this).find('button.submitbutton').attr('disabled', ''); 
       }, 
       error: function(){ 
        $('.ui-dialog-titlebar #ui-dialog-title-dialog').html('Error'); 
        $('#dialog_text').html("There was an error submitting the form. Please try again."); 
        $('#dialog').dialog('open'); 
        $(this).find('button.submitbutton').attr('disabled', ''); 
       } 
      }); 
     }else{ 
      $msgdis = '<div class="login-box-error-small corners"><p>Error, '+errmsg+'</p></div>'; 
      $(errorselector).html($msgdis).slideDown('slow'); 
     } 
     //make sure the form doesn't post 
     return false; 
    }); 
    }); 
    </script> 

Благодаря

+0

Вы добавить сеанс в autoload.php? –

+0

Да, прямо сейчас сеанс в кодировке autoload.php. –

ответ

0

В контроллере в функции login_action() г emove exit. Вы остановили сценарий, поэтому $passstring никогда не будет установлен.

поэтому эта функция должна выглядеть так:

function login_action(){ 
     $this->load->model('login_model'); 
     $query = $this->login_model->check_login(); 
     if($query){ 
      $data = array(
       'adminid' => $query[0]['AdminID'], 
       'is_logged_in' => true 
      ); 
      $this->load->library('session'); 
      $this->session->set_userdata($data); 
      print_r($this->session); 
      //exit; <-- remove this 
      //redirect('admin'); 
      $success = true; 
      $success_redirect = true; 
      $success_msg = site_url('admin'); 
      $error = false; 
      $error_msg = '';    
     }else{ 
      $success = false; 
      $success_redirect = false; 
      $success_msg = site_url('admin'); 
      $error = true; 
      $error_msg = 'Error, Wrong username or password!'; 
     } 
     $passstring = array(
      'success' => $success, 
      'success_msg' => $success_msg, 
      'success_redirect' => $success_redirect, 
      'error' => $error, 
      'error_msg' => $error_msg 
     ); 

     echo json_encode($passstring); 
    }