войти с помощью codeigniter - PullRequest
0 голосов
/ 10 ноября 2010

Я разработал логин с использованием codeigniter, но у меня возникла эта проблема, когда вошел в систему, любой может ввести другой адрес в другой адрес и перейти к другой учетной записи. как этого избежать? пожалуйста, проинструктируйте меня?

Вот как я закодировал логин:

function index()
{
    $this->is_logged_in();
}

function is_logged_in(){
    $is_logged_in = $this->session->userdata('is_logged_in');

    if(!isset($is_logged_in)||$is_logged_in!= TRUE ){
        echo 'you are not logged in  ';
        echo anchor('login_controller','Login');
    }else{
        $this->main();      
    }
}

Ответы [ 4 ]

2 голосов
/ 10 ноября 2010

Я работал с двумя подходами с аутентификацией пользователя в CI

Вы можете сделать это для каждой страницы с помощью функции __construct(), проверяя, вошел ли пользователь в систему, и затем перенаправить их соответствующим образом.

в качестве альтернативы вы можете расширить базовые контроллеры, чтобы у вас был (например) обычный контроллер для страниц, не требующих аутентификации, «публичный» контроллер, который требует входа в систему, и «административный» контроллер, который позволяет только определенные типы пользователей.

Я еще раз обращаюсь к Филу Стерджону за этим - расширение базовых контроллеров

Я бы также порекомендовал взглянуть на некоторые библиотеки аутентификации - Ion Auth и Tank Auth обычно считаются очень хорошими, но есть множество доступных.

Ваша функция также довольно ограничена - пользователь может сделать только один вариант (основной).

лучший подход

<?php

class Foo extends Controller {

    function __construct() 
    {
        $is_logged_in = $this->session->userdata('is_logged_in');

        if(!isset($is_logged_in)||$is_logged_in!= TRUE )
        {
            redirect('login');
        }
    }
    // else, logged in..proceed
}

например.

1 голос
/ 11 ноября 2010

Вы сказали:

У меня возникла эта проблема, когда вошел в систему, любой может ввести другой адрес в другой адрес и перейти к другой учетной записи

Как я понимаю, когдавы проверяете учетные данные пользователя, которого вы не сохраняете в своем сеансе, идентификатор этого пользователя.

Вам необходимо хранить идентификатор в каждом сеансе, чтобы знать, кто просматривает каждую страницу и что вам нужно, чтобы показать его.

Пример контроллера:

function validate_credentials() {
    $this->load->model('users_model');
    if($this->users_model->check_pass() == true) {
       $data = array(
             'email' => $this->input->post('email'),
             'is_logged_in' => true,
             'user_id' => $this->users_model->get_userid()
             );
       $this->session->set_userdata($data);
    }
}

Пример модели:

function get_userid() {
    $this->db->where('email', $this->input->post('email'));
    $q = $this->db->get('users');
    $r = $q->row();
    return $r->id;
}

Теперь вы можете загружать содержимое динамически на основена $ this-> session-> userdata ('user_id');и определите, что они должны видеть на каждой странице.

PS: Если вы хотите иметь роли, вам нужно только сохранить роль пользователя в своем сеансе, добавив еще один 'ключ' => 'val'

Надеюсь, это поможет.

1 голос
/ 10 ноября 2010

Вам нужно будет создать сеанс после того, как пользователи войдут в систему, например, указанные правильные учетные данные.После того, как вы это сделаете, вам нужно будет установить проверку сеанса на каждой странице, которую должны просматривать только зарегистрированные пользователи.

Для получения дополнительной информации посмотрите Класс сеанса CI .

0 голосов
/ 03 мая 2018
//model

function fetchrowlogin($info,$table){

    $this->db->select('*');
    $this->db->where($info);
    $this->db->from($table);
    $query = $this->db->get();
    if($query->num_rows() > 0){
    $row = $query->row_array();
        return $row;
    }
}


///controller

function login(){

    if(isset($_POST['login'])){

        $log['email'] = $_POST['email'];
        $log['password'] = $_POST['password'];
        $details = $this->User_model->fetchrowlogin($log,'candidate');

        if(count($details)){
            $ids = $details['id'];
            $email = $details['email'];
            $fname = $details['fname'];

            $this->session->set_userdata(array(

                'custid' => $ids,
                'emailid'=> $email,
                'fname'=> $fname,
            ));
        redirect('http://localhost/test27/index.php/welcome/dashboard');
        }else{

        redirect(base_url().'front1');


        }

    }



    $this->load->view('front/login');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...