2010-11-10 3 views
0

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

regrards, Rangana

+0

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

+0

Я предоставил код ниже ... –

ответ

2

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

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

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

Я имею в виду еще раз Фил осетра для этого - extending base controllers

я бы также рекомендую посмотреть на какой-Auth библиотек - 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 
} 

, например.

+0

Большое спасибо за подробный ответ и предложения ... я пройду через них! –

1

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

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

+0

, но я использовал класс сеанса в своем кодировании? вот код, ниже вашего сообщения, есть ли что-то не так? :( –

+0

@rangana: ваш код кажется прекрасным, но убедитесь, что вы устанавливаете сеанс для '$ this-> session-> userdata ('is_logged_in')' во время входа пользователя в систему. – Sarfraz

0
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();  
    } 
} 

это так, как я закодирован логин

+0

Не публикуйте – Matthew

+0

Хорошо, я сделаю вот так ...! –

1

Вы сказали:

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

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

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

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

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»

Надежда, что помогает.

+0

спасибо, что вам понравилось. очень много для подробного объяснения, это также полезно! –