我有一个正在开发的实时网站link to site。我正在使用codeigniter进行UI的设置和引导。
背景故事- 该站点具有实时登录名,当您输入正确的用户名/密码时,它将重定向您到管理页面。所有这些工作一直持续到上周末,当时我正在升级某些功能,并且沿线该站点开始引发403错误。登录后,您将收到403错误,然后您将无法访问域中的任何页面,因为它们都引发了403错误。
我看了几乎所有关于codeigniter和403错误的文章,并认为原因是我在href或src属性中缺少分号。像这个<a href="<?php echo base_url()."controller/function".$bla."" ?>"
一样,但是当我更改它时,它什么也没有改变(不确定它是否做了什么)。我也看了网上,但没找到什么。
我不知道问题是什么。我检查了四倍以某种方式连接到登录名的代码,但是我和phpcodechecker都没有发现我的代码有什么问题,通常,代码检查器可以解决我错过的大多数事情。
由于登录是发生问题的地方,因此这里是用于登录以及随后用于登录的控制器,视图和模型的代码。
登录视图
<br>
<div class="row">
<div class="col-md-4 offset-4">
<div class="login-form">
<?php echo validation_errors();?>
<?php echo form_open('admin/magacinLogin');?>
<h3 class="text-center">Login</h3>
<div class="form-group">
<input name="username" type="text" class="form-control" placeholder="Username" required="required">
</div>
<div class="form-group">
<input name="password" type="password" class="form-control" placeholder="Password" required="required">
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary btn-block">Log in</button>
</div>
<div class="clearfix">
<label class="pull-left checkbox-inline"><input type="checkbox" name="rem" id="rem"> Remember me</label>
</div>
<?php echo form_close(); ?>
控制器登录
public function magacinLogin()
{
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required|callback_check_db');
if ($this->form_validation->run() == TRUE)
{
$this->session->set_userdata('logged_in', TRUE);
$this->session->set_userdata('username', $username);
redirect('/admin_page');
}
else
{
$this->load->view('header_en');
$this->load->view('logo');
$this->load->view('navbar');
$this->load->view('mlogin');
$this->load->view('footer');
}
}
function check_db()
{
extract($_POST);
$try_login = $this->admin_model->login($username, $password);
if(!$try_login)
{
$this->form_validation->set_message('check_db', 'Wrong username or password');
return FALSE;
}
else
{
$this->session->set_userdata('logged_in', TRUE);
$this->session->set_userdata('username', $username);
redirect('/admin_page');
}
}
登录检查模型
function login($username, $password)
{
$sql = "SELECT * FROM xxxx WHERE xxxx ='".$username."'";
$query = $this->db->query($sql);
$hash = $this->db->query($sql)->row()->xxxx;
if ($query->num_rows() == 1 && password_verify($password, $hash)) {
return $query->result_array();
}
else
{
return false;
}
}
登录后,使用其他控制器
function index()
{
if($this->session->userdata('logged_in'))
{
$session_data = $this->session->userdata('logged_in');
$data['username'] = $session_data['username'];
$this->load->view('header_magacin');
$this->load->view('test');
$this->load->view('footer_magacin');
}
else
{
//If no session, redirect to login page
redirect('/login', 'refresh');
}
}
感谢您阅读,希望您能与我分享一些知识。
编辑:
我想添加该站点托管在litespeed Web服务器上。在底部的403错误中,该页面由litespeed Web服务器托管。我正在阅读有关lite Web服务器的信息,还询问了我的托管服务提供商是否有任何更改。到目前为止,他们还没有回信,所以我还不知道。