我正在使用CodeIgniter框架用PHP做我的网站。 我有一些页面想对用户隐藏,我只想做非常简单的身份验证。例如,我只是在标头脚本中硬编码 ID 和密码,并要求用户输入 ID 和密码才能显示内容。是否可以使用代码点火器执行此操作?
谢谢。
你应该看看 PHP Basic 身份验证: 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;
}
这是最基本的。用户想要转到隐藏页面 1,如果他们没有会话,他们会被重定向到登录页面(只需要一个帖子到自己和一个 id 和密码字段以及一个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!';
}
}
我认为您应该是与您的用户相关的角色类型,您可以为公共用户设置角色。之后,您可以使用代码点火器会话在控制器中检查。如果您共享控制器和模型。我们可以帮助您..