我已经在codeigniter中创建了一个登录表单,但是当我使用用户的凭据登录时,我已经在数据库中注册了它(“用户名和密码无效”)。我正在努力解决这个问题,请帮帮我! 我的控制器如下:login.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class login extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->library('session');
$this->load->helper('form');
$this->load->helper('url');
$this->load->helper('html');
$this->load->database();
$this->load->library('form_validation');
//load the login model
$this->load->model('login_model');
}
public function index()
{
//get the posted values
$username = $this->input->post("txt_username");
$password = $this->input->post("txt_password");
//set validations
$this->form_validation->set_rules("txt_username", "Username");
$this->form_validation->set_rules("txt_password", "Password");
if ($this->form_validation->run() == FALSE)
{
//validation fails
$this->load->view('login_view');
}
else
{
//validation succeeds
if ($this->input->post('btn_login') == "Login")
{
//check if username and password is correct
$usr_result = $this->login_model->get_user($username,
$password);
if ($usr_result > 0) //active user record is present
{
//set the session variables
$sessiondata = array(
'username' => $username,
'loginuser' => TRUE
);
$this->session->set_userdata($sessiondata);
redirect("index");
}
else
{
$this->session->set_flashdata('msg', '<div class="alert
alert-danger text-center">Invalid username and password!</div>');
redirect('login/index');
}
}
else
{
redirect('login/index');
}
}
}
}?>
我的模特:login_model.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class login_model extends CI_Model
{
function __construct()
{
// Call the Model constructor
parent::__construct();
}
//get the username & password from tbl_usrs
function get_user($usr, $pwd)
{
$sql = "select * from tbl_users where username = '" . $usr . "' and
password = '" . md5($pwd) . "' and status = 'active'";
$query = $this->db->query($sql);
//echo $sql; exit;
return $query->num_rows();
}
}?>
我的观点:login_view.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login Form</title>
<!--link the bootstrap css file-->
<link
href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"
rel="stylesheet">
<style type="text/css">
.colbox {
margin-left: 0px;
margin-right: 0px;
}
</style>
</head>
<body>
<div class="container" style="margin-top: 100px;">
<div class="row">
<div class="col-lg-6 col-sm-6">
<h1>Welcome!</h1>
</div>
<div class="col-lg-6 col-sm-6">
<ul class="nav nav-pills pull-right" style="margin-top:20px">
<li class="active"><a href="#">Login</a></li>
</ul>
</div>
</div>
</div>
<hr/>
<div class="container">
<div class="row">
<div class="col-lg-4 col-sm-4 well">
<?php
$attributes = array("class" => "form-horizontal", "id" => "loginform",
"name" => "loginform");
echo form_open("login/index", $attributes);?>
<fieldset>
<legend>Login</legend>
<div class="form-group">
<div class="row colbox">
<div class="col-lg-4 col-sm-4">
<label for="txt_username" class="control-
label">Username</label>
</div>
<div class="col-lg-8 col-sm-8">
<input class="form-control" id="txt_username"
name="txt_username" placeholder="Username" type="text" value="<?php echo
set_value('txt_username'); ?>" />
<span class="text-danger"><?php echo
-form_error('txt_username'); ?></span>
</div>
</div>
</div>
<div class="form-group">
<div class="row colbox">
<div class="col-lg-4 col-sm-4">
<label for="txt_password" class="control-label">Password</label>
</div>
<div class="col-lg-8 col-sm-8">
<input class="form-control" id="txt_password"
name="txt_password" placeholder="Password" type="password" value="<?php
echo set_value('txt_password'); ?>" />
<span class="text-danger"><?php echo
form_error('txt_password'); ?></span>
</div>
</div>
</div>
<div class="form-group">
<div class="col-lg-12 col-sm-12 text-center">
<input id="btn_login" name="btn_login" type="submit"
class="btn btn-default" value="Login" />
<input id="btn_cancel" name="btn_cancel" type="reset"
class="btn btn-default" value="Cancel" />
</div>
</div>
</fieldset>
<?php echo form_close(); ?>
<?php echo $this->session->flashdata('msg'); ?>
</div>
</div>
</div>
<!--load jQuery library-->
<script
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<!--load bootstrap.js-->
<script
src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js">
</script>
</body>
</html>
答案 0 :(得分:0)
在您的Controller文件中,您的类的名字必须是大写的,所以..
class Login extends CI_Controller
并保存您的Controller文件Login.php
而不是login.php
答案 1 :(得分:0)
创建自己的身份验证系统正在重新发明轮子,浪费时间,而且不安全。 codeigniter 3有一个类可以很好地完成它。它的名字是ion auth。
答案 2 :(得分:0)
get_user可能永远不会被调用!
“class login_model extends CI_Model”应为“class Login_model extends CI_Model”。这是一项要求:
其中Model_name是您的类的名称。班级名称必须具有 首字母大写,其余名称小写。使 确保你的类扩展了基础Model类。
答案 3 :(得分:0)
如果您没有创建视图或重定向到该视图所在的控制器,则登录404是正常的,请确保创建 user.php 视图
在用户控制器中使用
PUBLIC FUNCTION USER()
{
$THIS->LOAD->VIEW('USER VIEW HERE');
}