Php 如何设置RememberMe CodeIgniter Spark
我正在尝试设置joeauty/Memberme CodeIgniter火花。我在config forler中添加了rememberme.php,在system/libraries中添加了rememberme.php/在autoload.php和config.php中进行了更改,并在数据库中创建了两个表(ci_cookies和ci_会话)。 如果不单击复选框,我可以登录,但如果选中复选框,则不会发生任何事情 这是我的控制器:Php 如何设置RememberMe CodeIgniter Spark,php,codeigniter,Php,Codeigniter,我正在尝试设置joeauty/Memberme CodeIgniter火花。我在config forler中添加了rememberme.php,在system/libraries中添加了rememberme.php/在autoload.php和config.php中进行了更改,并在数据库中创建了两个表(ci_cookies和ci_会话)。 如果不单击复选框,我可以登录,但如果选中复选框,则不会发生任何事情 这是我的控制器: function __construct() { parent:
function __construct()
{
parent::__construct();
$this->load->model('registerclient_model','',TRUE);
}
function index()
{
if($this->session->userdata('logged_in') || $this->session->userdata('user_id'))
{ redirect('client_private_area', 'refresh');}
else{
$this->load->library('form_validation');
$this->form_validation->set_rules('email_address', 'Email', 'trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');
if($this->form_validation->run() == FALSE)
{
$data['error'] = 'Invalid email address and/or password.';
$this->load->view('templates/header');
$this->load->view('pages/login/client_login', $data);
$this->load->view('templates/footer');
}
else
{
//Go to private area
redirect('client_private_area', 'refresh');
}
}
}
function check_database($password)
{
$email = $this->input->post('email_address');
$result = $this->registerclient_model->login($email, $password);
if($result){
if($this->input->post('netid') == "on"){
$this->rememberme->setCookie($this->input->post('netid'));
if ($this->rememberme->verifyCookie()) {
// find user id of cookie_user stored in application database
$user = User::findUser($cookie_user);
// set session if necessary
if (!$this->session->userdata('user_id')) {
$this->session->set_userdata('user_id', $user);
}
$this->user = $user;
}
else if ($this->session->userdata('user_id')) {
$this->user = $this->session->userdata('user_id');
}
}
else
{
$sess_array = array();
foreach($result as $row)
{
$sess_array = array(
'id' => $row->id,
'first_name' => $row->first_name,
'email_address' => $row->email_address
);
$this->session->set_userdata('logged_in', $sess_array);
}
return TRUE;
}
}
else
{
$this->form_validation->set_message('check_database', 'Invalid email address and/or password.');
return false;
}
}
这是我的模型:
function login($email, $password) {
//create query to connect user login database
$this->db->select('id, first_name, email_address, password');
$this->db->from('client_register');
$this->db->where('email_address', $email);
$this->db->where('password', $this->registerclient_model->hash($password));
$this->db->limit(1);
//get query and processing
$query = $this->db->get();
if($query->num_rows() == 1)
{
return $query->result(); //if data is true
}
else
{
return false; //if data is wrong
}
}
我的看法是:
<div class="client_login_content_form">
<h1>CLIENT LOGIN FORM</h1>
<p class="loginform_error"><?php echo validation_errors(''); ?></p>
<?php echo form_open('verifylogin'); ?>
<ul>
<li><input type="text" size="20" id="email" name="email_address" value="<?php echo set_value('email_address'); ?>" required placeholder="Email Address"/></li>
<li><input type="password" size="20" id="passowrd" name="password" value="<?php echo set_value('password'); ?>" required placeholder="Password"/></li>
<li><p><input type="checkbox" name="netid" id="netid" checked>Remember me</p></li>
<li><input type="submit" class="login_content_form_button" value="LOG IN"/></li>
</ul>
<p class="forgot_login"><a href="<?php echo site_url('verifylogin/forgot'); ?>">Forgot your password?</a></p>
</form>
</div>
<form action="<?php echo site_url('admin'); ?>"><input type="submit" value="Admin" class="admin_button" /></form>
客户端登录表单
- 您没有将sparks安装到您的
/应用程序
文件夹中,而是安装在sparks
文件夹中。请参阅:这可能也有帮助:因此,为了使用RememberMe,我必须在我的项目中安装Spark Manager文件夹?是的Memberme
是一个spark,所以它需要作为一个spark安装。谢谢,我不知道。