在下面的codeigniter代码中,我已经放置了控制器和视图部分。现在,如果非活动状态尝试记录帐户,它应该在活动用户中显示以及登录表单。在我的情况下,消息显示没有登录,最后登录表单消失。 控制器:
function index()
{
$data['main_content'] = 'login_form';
$this->load->view('includes/template', $data);
}
function inactive()
{
echo"<script>alert('In active user');</script>";
}
function validate_credentials()
{
$this->load->model('membership_model');
$query = $this->membership_model->validate();
if($query) // if the user's credentials validated...
{
$data = array(
'username' => $this->input->post('username'),
'is_logged_in' => true
);
if($query->num_rows()>0){
$status = $query->row()->account_status;}
else {
$status = ''; }
if($status == 'active')
{
$this->session->set_userdata($data);
redirect('site1/members_area');
}
else //Account In active
{ $this->inactive(); }
}
else // incorrect username or password
{
$this->index();
}
}
视图:
<?php $this->load->view('includes/header'); ?>
<link rel="stylesheet" type="text/css" href="<?php echo base_url();?>css/style1.css" />
<div id="login_form">
<h1>Login!</h1>
<?php
echo form_open('login/validate_credentials');
echo form_input('username', 'Username');
echo form_password('password', 'Password');
echo form_submit('submit', 'Login');
echo anchor('login/signup', 'Create Account');
echo form_close();
?>
</div><!-- end login_form-->
<?php $this->load->view('includes/footer'); ?>
答案 0 :(得分:1)
我无法在控制器的inactive()
中看到您调用视图文件的位置
function inactive()
{
echo"<script>alert('In active user');</script>";
$this->load->view('Your view with login form'); // this part
}
答案 1 :(得分:0)
此处最明显(可能)的错误是您未将发布的数据传递给$this->membership_model->validate();
。由于你没有将代码发布到该函数,我不能100%肯定,但我愿意打赌这是问题所在。信息未传递,因此$query
变量未正确设置,因此显示错误。
答案 2 :(得分:0)
你为什么不试试这个:
function index($inactive_login = FALSE) {
$data['inactive_login'] = $inactive_login;
$data['main_content'] = 'login_form';
$this->load->view('includes/template', $data);
}
function validate_credentials() {
$this->load->model('membership_model');
$query = $this->membership_model->validate();
if($query) // if the user's credentials validated...
{
$data = array(
'username' => $this->input->post('username'),
'is_logged_in' => true
);
if($query->num_rows()>0){
$status = $query->row()->account_status;}
else {
$status = ''; }
if($status == 'active')
{
$this->session->set_userdata($data);
redirect('site1/members_area');
}
else //Account In active
{
$inactive_login = TRUE;
$this->index($inactive_login);
}
}
else // incorrect username or password
{
$this->index();
}
}
查看:
<?php $this->load->view('includes/header'); ?>
<?php
if($inactive_login){
echo "<script>alert('In active user');</script>";
}
?>
<link rel="stylesheet" type="text/css" href="<?php echo base_url();?>css/style1.css" />
<div id="login_form">
<h1>Login!</h1>
<?php
echo form_open('login/validate_credentials');
echo form_input('username', 'Username');
echo form_password('password', 'Password');
echo form_submit('submit', 'Login');
echo anchor('login/signup', 'Create Account');
echo form_close();
?>
</div><!-- end login_form-->
<?php $this->load->view('includes/footer'); ?>