PHP - Могу ли я установить статический идентификатор / пароль для страницы, используя платформу CodeIgniter? - PullRequest
0 голосов
/ 13 сентября 2018

Я делаю свой сайт с PHP, используя платформу CodeIgniter. У меня есть несколько страниц, которые я хочу скрыть от пользователей, и я просто хочу сделать очень простую аутентификацию. Например, я просто жестко кодирую идентификатор и пароль в своем скрипте заголовка и требую, чтобы пользователи вводили идентификатор и пароль для отображения содержимого. Можно ли сделать это с CodeIgniter?
Спасибо.

Ответы [ 3 ]

0 голосов
/ 13 сентября 2018

Это так же просто, как и получается.Пользователь хочет перейти на скрытую страницу 1, если у него нет сеанса, он перенаправляется на страницу входа в систему (ему просто требуется сообщение для себя, поле идентификатора и пароля и место для echo $msg).После входа они будут перенаправлены обратно на скрытую страницу и смогут просматривать содержимое.

Это можно немного убрать, но это общая идея.

class Auth extends CI_Controller {

    private $id = '123';
    private $password = 'abc';

    public function __construct() {
        parent::__construct();
        $this->load->library('session');
        $this->load->helper('url');
    }

    public function login_page() {
        $data = array();
        if ($this->input->post()) {
            $id = $this->input->post('id');
            $password = $this->input->post('password');
            if ($id == $this->id && $password == $this->password) {
                $this->session->set_userdata('auth', TRUE);
                if ($this->session->has_userdata('redirect_to')) {
                    redirect($this->session->redirect_to);
                    exit;
                }
                // no redirect specified, display message
                $data['msg'] = 'Logged in.';
            } else {
                $data['msg'] = 'Wrong credentials.';
            }
        }
        $this->load->view('login', $data);
    }

    public function hidden_content_1() {
       if (!$this->session->has_userdata('auth')) {
           $this->session->set_userdata('redirect_to', uri_string());
           redirect('auth/login_page');
       }
       echo 'If you are seeing this you are logged in!';
    }

}
0 голосов
/ 13 сентября 2018

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

0 голосов
/ 13 сентября 2018

Вы должны взглянуть на базовую аутентификацию PHP: http://php.net/manual/en/features.http-auth.php

<?php

$user = 'foo';
$pwd = 'bar';

if (!isset($_SERVER['PHP_AUTH_USER']))
{
    askForPwd();
}
else
{
    if ($_SERVER['PHP_AUTH_USER'] !== $user && $_SERVER['PHP_AUTH_PW'] !== $pwd)
    {
        askForPwd();
    }

    // continue execution
}

function askForPwd()
{
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Text to send if user hits Cancel button';
    exit;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...