Проверка пользователей Codeigniter Войти - PullRequest
3 голосов
/ 10 апреля 2011

Я новичок в Code Igniter и сейчас я создаю свою собственную пользовательскую систему.Я определенно участвую в процессе входа в систему и проверил, вошел ли пользователь в данный момент в систему или нет.

В моем заголовке я хочу отобразить ссылку «Выход», если они уже вошли в систему, или «Вход», если они еще не вошли в систему.

У меня есть рабочая функция в контроллере индекса следующим образом: переменная $ loginstatus отправляется в представление заголовка моей страницы:

function check_session()
{
    //Check session status

            $session = $this->session->userdata('login_state'); 

            $default = "Log In";

            if ($session == 1) 
            {
                $url = site_url('index.php/users/logout'); 
                $status = "Log Out";



            } 
            else 
            {
                $url = site_url('index.php/users/login'); 
                $status = $default;
            }

        $loginstatus = array(
                        "url" => $url,
                        "status" => $status 
                        );

        return $loginstatus;
}

Поскольку в настоящее время она находится только в контроллере индекса,$ loginstatus не генерируется для представления заголовка для других страниц, и это моя проблема.

Где бы я поместил эту функцию, чтобы она всегда загружалась перед моим заголовком?Я попытался создать библиотеку с классом Common, а затем автоматически загрузить ее, но у меня возникло много проблем.

Заранее спасибо.

1 Ответ

8 голосов
/ 10 апреля 2011

Если вы используете версию CI ниже 2.0, то создайте новый класс в application / library / MY_Controller.php, в противном случае в application / core / MY_Controller.php и всех ваших контроллерах приложений. В этом классе в методе __construct вы проверите статус входа в систему и отправите его в представления.

class MY_Controller extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();

        //Get the status which is array
        $login_status = $this->check_session();

        //Send it to the views, it will be available everywhere

        //The "load" refers to the CI_Loader library and vars is the method from that library.
        //This means that $login_status which you previously set will be available in your views as $loginstatus since the array key below is called loginstatus.
        $this->load->vars(array('loginstatus' => $login_status));
    }

    protected function check_session()
    {
        //Here goes your function
    }
}

Также убедитесь, что ваши контроллеры приложений выходят из этого класса

//application/controllers/index.php

class Index extends MY_Controller
{
    public function __construct()
    {
        parent::__construct();
    }
}

По вашему мнению вы можете сделать это: "> <? Php echo $ loginstatus ['status']; ?>

Это возможно, поскольку метод CI_Loader vars () выполняет извлечение переданных ему параметров.

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