【发布时间】:2017-11-10 15:51:24
【问题描述】:
我正在使用 CodeIgniter 框架开发一个网站,并尝试为管理员和用户创建一些会话。但是当我尝试使用这些会话时,它们无法正常工作。当我退出时,我收到了找不到会话的错误:$_SESSION['user_level']
此外,当我退出并单击登录表单视图页面时,我没有执行任何操作就收到此错误:
A PHP Error was encountered
Severity: Notice
Message: A session had already been started - ignoring session_start()
Filename: controllers/Auth.php
Line Number: 80
Backtrace:
File: /home/ubuntu/workspace/application/controllers/Auth.php
Line: 80
Function: session_start
File: /home/ubuntu/workspace/index.php
Line: 315
Function: require_once
这是我的控制器auth.php,具有用户登录、管理员登录和注销功能。 :
public function logout()
{
$this->session->sess_destroy();
redirect("https://kadokado-ferran10.c9users.io/", "refresh");
}
public function adminlogin()
{
session_start();
$this->form_validation->set_rules('admin_email', 'Admin_email', 'required');
$this->form_validation->set_rules('admin_wachtwoord', 'Wdmin_wachtwoord', 'required|min_length[5]');
if ($this->form_validation->run() == TRUE) {
$admin_email = $_POST['admin_email'];
$admin_wachtwoord = ($_POST['admin_wachtwoord']);
//check admin in database
$this->db->select('*');
$this->db->from('admin');
$this->db->where(array('admin_email'=>$admin_email, 'admin_wachtwoord' => $admin_wachtwoord));
$query = $this->db->get();
$admin = $query->row();
//Als admin bestaat
if($admin->admin_email) {
$this->session->set_flashdata("success","U bent nu ingelogd als admin");
//Maak admin sessions aan
$_SESSION['user_logged'] = FALSE;
$_SESSION['admin_logged'] = TRUE;
$_SESSION['is_logged'] = true.
$_SESSION['user_level'] = 10;
$_SESSION['admin_id'] = $admin->admin_id;
$_SESSION['admin_email'] = $admin->admin_email;
//link naar profiel pagina
redirect("IndexController", "refresh");
} else {
$this->session->set_flashdata('error','Invalid email or password');
//wanneer er een foutmelding is link weer naar de login pagina
redirect("https://kadokado-ferran10.c9users.io/auth/adminlogin" , "refresh");
}
}
//laad alle adminlogin views
$this->load->view('templates/header');
$this->load->view('adminviews/adminlogin');
$this->load->view('templates/footer');
}
public function login()
{
//laad login view
session_start();
$this->form_validation->set_rules('email', 'Email', 'required');
$this->form_validation->set_rules('wachtwoord', 'Wachtwoord', 'required|min_length[5]');
if ($this->form_validation->run() == TRUE) {
$email = $_POST['email'];
$wachtwoord = ($_POST['wachtwoord']);
//check gebruiker in database
$this->db->select('*');
$this->db->from('users');
$this->db->where(array('email'=>$email, 'wachtwoord' => $wachtwoord));
$query = $this->db->get();
$user = $query->row();
//Als gebruiker bestaat
if($user->email) {
$this->session->set_flashdata("success","U bent nu ingelogd");
$_SESSION['user_logged'] = TRUE;
$_SESSION['admin_logged'] = FALSE;
$_SESSION['is_logged'] = true.
$_SESSION['user_level'] = 1;
$_SESSION['user_id'] = $user->user_id;
$_SESSION['email'] = $user->email;
$_SESSION['voornaam'] = $user->voornaam;
$_SESSION['achternaam'] = $user->achternaam;
$_SESSION['woonplaats'] = $user->woonplaats;
$_SESSION['straat'] = $user->straat;
$_SESSION['huisnummer'] = $user->huisnummer;
$_SESSION['postcode'] = $user->postcode;
$_SESSION['beschrijving'] = $user->beschrijving;
$_SESSION['profiel_foto'] = $user->profiel_foto;
//link naar profiel pagina
redirect("user/profile", "refresh");
} else {
$this->session->set_flashdata('error','Invalid email or password');
//wanneer er een foutmelding is link weer naar de login pagina
redirect("https://kadokado-ferran10.c9users.io/auth/login" , "refresh");
}
}
//laad login view
$this->load->view('loginregistreer');
}
这是我标题中的一些代码,用于在我创建的会话中回显一些按钮:
<li>
<?php
if($_SESSION['user_level'] == 1): ?>
<a class="l3" href="https://kadokado-ferran10.c9users.io/user/profile">Account</a>
<?php endif;?>
</li>
<li>
<?php if($_SESSION['user_level'] == 10):?>
<a class="l3" href="https://kadokado-ferran10.c9users.io/IndexController">Admin dashboard</a>
<?php endif; ?>
</li>
<li>
<?php if($_SESSION['user_level'] <= 10):?>
<a class="l4" href="https://kadokado-ferran10.c9users.io/auth/logout">Uitloggen</a>
<?php else: ?>
<a class="l5" href="https://kadokado-ferran10.c9users.io/auth/register">Registreren</a>
</li><li>
<a class="l6" href="https://kadokado-ferran10.c9users.io/auth/login">Inloggen</a>
<?php endif ;?>
</li>
它的工作原理是,当我以管理员身份登录时,它会在标题中显示正确的按钮,但是当我注销时,在包含标题的每个页面上都会出现 3 次此错误:
A PHP Error was encountered
Severity: Notice
Message: Undefined index: user_level
Filename: templates/header.php
Line Number: 31
Backtrace:
File: /home/ubuntu/workspace/application/views/templates/header.php
Line: 31
Function: _error_handler
File: /home/ubuntu/workspace/application/views/home.php
Line: 1
Function: include_once
File: /home/ubuntu/workspace/application/controllers/Site.php
Line: 9
Function: view
File: /home/ubuntu/workspace/index.php
Line: 315
Function: require_once
有人知道我为什么会收到这些错误吗?
【问题讨论】:
-
尝试查看文档。
标签: php codeigniter session codeigniter-3