Добавление массива данных для перенаправления - PullRequest
0 голосов
/ 19 августа 2011

Мой вопрос дня такой. После успешного входа в систему я хочу отправить user_id в массиве данных на панель управления, когда он перенаправляет. У меня много кода здесь. 98% этого кода был написан из библиотеки аутентификации, и я боюсь, что если слишком много возиться с этим сейчас, я в итоге сломаю что-то другое, пытаясь сделать что-то одно. Любая помощь?

class Auth extends CI_Controller
{
function __construct()
{
    parent::__construct();

    $this->load->helper(array('form', 'url'));
    $this->load->library('form_validation');
    $this->load->library('security');
    $this->load->library('tank_auth');
    $this->lang->load('tank_auth');   

    if ($this->tank_auth->is_logged_in()) {
        redirect('/cpanel/');
    } else {
        redirect('/auth/login/');
    }      
}

function index()
{

}

/**
 * Login user on the site
 *
 * @return void
 */
function login()
{
    if ($this->tank_auth->is_logged_in()) {                                 // logged in
        redirect('/cpanel');

    } elseif ($this->tank_auth->is_logged_in(FALSE)) {                      // logged in, not activated
        redirect('/auth/send_again/');

    } else {
        $data['login_by_username'] = ($this->config->item('login_by_username', 'tank_auth') AND
                $this->config->item('use_username', 'tank_auth'));
        $data['login_by_email'] = $this->config->item('login_by_email', 'tank_auth');

        $this->form_validation->set_rules('login', 'Login', 'trim|required|xss_clean');
        $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean');
        $this->form_validation->set_rules('remember', 'Remember me', 'integer');

        // Get login for counting attempts to login
        if ($this->config->item('login_count_attempts', 'tank_auth') AND
                ($login = $this->input->post('login'))) {
            $login = $this->security->xss_clean($login);
        } else {
            $login = '';
        }

        $data['errors'] = array();

        if ($this->form_validation->run()) {                                // validation ok
            if ($this->tank_auth->login(
                    $this->form_validation->set_value('login'),
                    $this->form_validation->set_value('password'),
                    $this->form_validation->set_value('remember'),
                    $data['login_by_username'],
                    $data['login_by_email'])) {                             // success
                redirect('/cpanel');

            } else {
                $errors = $this->tank_auth->get_error_message();
                if (isset($errors['banned'])) {                             // banned user
                    $this->_show_message($this->lang->line('auth_message_banned').' '.$errors['banned']);

                } elseif (isset($errors['not_activated'])) {                // not activated user
                    redirect('/auth/send_again/');

                } else {                                                    // fail
                    foreach ($errors as $k => $v)   $data['errors'][$k] = $this->lang->line($v);
                }
            }
        }
        $this->template->set_layout('default')->enable_parser(false);
        $this->template->build('auth/login_form', $data);
    }
}

Редактировать:

Итак, я включил модель с контроллером, однако я получаю эту ошибку, поскольку я также включил модель.

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: id

Filename: controllers/cpanel.php

Line Number: 20
A PHP Error was encountered

Severity: Warning

Message: Cannot modify header information - headers already sent by (output started at /home/xtremer/public_html/system/core/Exceptions.php:170)

Filename: core/Common.php

Line Number: 409
A Database Error Occurred

Error Number: 1066

Not unique table/alias: 'users'

SELECT * FROM (`users`, `users`) JOIN `user_profiles` ON `users`.`id` = `user_profiles`.`user_id`

Filename: /home/xtremer/public_html/kowmanager/models/cpanel/dashboard.php

Line Number: 38

Модель:

class Dashboard extends CI_Model
{
private $table_name         = 'users';          // user accounts
private $profile_table_name = 'user_profiles';  // user profiles

function __construct()
{
    parent::__construct();

    $ci =& get_instance();
    $this->table_name           = $ci->config->item('db_table_prefix', 'tank_auth').$this->table_name;
    $this->profile_table_name   = $ci->config->item('db_table_prefix', 'tank_auth').$this->profile_table_name;
}

/**
 * Get user info by Id
 *
 * @param   int
 * @param   bool
 * @return  object
 */
function get_user_info($id)
{
    $this->db->select('*');
    $this->db->from('users');
    $this->db->join('user_profiles', 'users.id = user_profiles.user_id');

    $query = $this->db->get($this->table_name);
    if ($query->num_rows() == 1) 
    {
        return $data = $query->row();    
    }
    else 
    {
        return NULL;    
    }

}           

}

1 Ответ

2 голосов
/ 19 августа 2011

Из того, что я понимаю, ваш настоящий вопрос:

Как получить идентификатор пользователя, вошедшего в систему?

Ответ:

$this->tank_auth->get_user_id()

Это будет извлекать user_id из данных сеанса, так что вам не нужно каждый раз отправлять этот идентификатор, вы можете просто «попросить» библиотеку tank_auth, чтобы он вам был предоставлен:

PS: Если это не то, что вы хотите, возможно, вы захотите перефразировать вопрос.

Позже Редактировать:

Почему это __construct ()?

if ($this->tank_auth->is_logged_in()) { redirect('/cpanel/'); } else { redirect('/auth/login/'); }

По сути, это предотвращает доступ к любому действию в auth, кроме входа в систему. и, безусловно, вызывает цикл перенаправления

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...