Codeigniter 无法登录,显示未找到对象
admin/views/login.phpCodeigniter 无法登录,显示未找到对象,codeigniter,Codeigniter,admin/views/login.php <?php $this->load->library('form_validation'); ?> <?php echo validation_errors(); ?> <?php echo form_open('cpages/ceklogin'); ?> <div class="login-card"> <center><?php //echo $warning; ?>
<?php $this->load->library('form_validation'); ?> <?php echo validation_errors(); ?> <?php echo form_open('cpages/ceklogin'); ?> <div class="login-card"> <center><?php //echo $warning; ?> <?php echo $this->session->flashdata('warning'); ?> </center> <h2>Gionda CMS Login</h2><br> <form> <div class="login"><input type="text" name="username" placeholder="Username"></div> <div class="login"><input type="password" name="password" placeholder="Password"></div> <br> <input type="submit" name="login" class="login login-submit" value="login"> </form> <div class="login-help"> <a href="#">Register</a> • <a href="#">Forgot Password</a> </div> </div>
models/Mpages.php
public function login()
{
$query = $this->db->get('login');
return $query->result();
}
用户名电子邮件密码角色
使用者user@mail.com12345管理员
用户2user2@mail.com$2y$10$PrDTzzETQ.NzI9eIN0WYDubhBZhkg9XEo10MxRYpv4M经理
我尝试使用用户名:用户密码:12345登录,但尚未成功登录。我想知道为什么
找不到对象
在此服务器上找不到请求的URL。参考页面上的链接似乎错误或过时。请将错误告知该页的作者
如果您认为这是服务器错误,请联系网站管理员
我想知道它的路线:
routes.php
$route['default_controller'] = 'cpages/login';
$route['cpages/login'] = 'cpages/login';
无需调用models方法。您可以在控制器上获取表数据。请这样尝试
public function ceklogin() {
$username = $this->input->post('username');
$password = $this->input->post('password');
$this->db->where('username', $username);
$this->db->where('password', $password);
$query=$this->db->get('login');
if ($query->num_rows() >= 1)
{
// echo 'LOGIN BERHASIL !';
$data['login']=$query->result(); //returns data in object format
$this->load->view('index', $data);
}
else
{
// echo 'LOGIN GAGAL !';
$this->session->set_flashdata('warning', 'Your username and password are wrong !');
//$data['warning']='Your username and password are wrong !';
$this->load->view('login');
}
}
foreach($login as $l)
{
echo $l->username."<br/>";
echo $l->password;
so on..
}
在您的视图中,使用foreach
循环获取数据
public function ceklogin() {
$username = $this->input->post('username');
$password = $this->input->post('password');
$this->db->where('username', $username);
$this->db->where('password', $password);
$query=$this->db->get('login');
if ($query->num_rows() >= 1)
{
// echo 'LOGIN BERHASIL !';
$data['login']=$query->result(); //returns data in object format
$this->load->view('index', $data);
}
else
{
// echo 'LOGIN GAGAL !';
$this->session->set_flashdata('warning', 'Your username and password are wrong !');
//$data['warning']='Your username and password are wrong !';
$this->load->view('login');
}
}
foreach($login as $l)
{
echo $l->username."<br/>";
echo $l->password;
so on..
}
foreach($l登录)
{
echo$l->username.“
”;
echo$l->密码;
等等。。
}
下面是一个示例,说明如何在模型中完成我的工作
我认为您使用的是php哈希
一旦创建哈希
然后你需要验证它
我自己我自动加载我的模型但你不必
$autoload['libraries'] = array('database', 'session');
$autoload['model'] = array('user/user_model');
模型
文件名:User_model.php首字母全大写
<?php
class User_model extends CI_Model {
public $table_name = 'user';
private $user_id;
private $username;
private $firstname;
private $lastname;
private $email;
public function __construct() {
parent::__construct();
if ($this->session->userdata('user_id')) {
$this->db->select('user_id, username, firstname, lastname, email, date_joined');
$this->db->from($this->db->dbprefix . $this->table_name);
$this->db->where('user_id', $this->session->userdata('user_id'));
$this->db->where('status', '1');
$user_query = $this->db->get();
if ($user_query->num_rows() == 1) {
$this->user_id = $user_query->row()->user_id;
$this->username = $user_query->row()->username;
$this->firstname = $user_query->row()->firstname;
$this->lastname = $user_query->row()->lastname;
$this->email = $user_query->row()->email;
}
} else {
$this->logout();
}
}
public function logout() {
unset($_SESSION['user_id']);
$this->user_id = '';
$this->username = '';
$this->firstname = '';
$this->lastname = '';
$this->email = '';
}
public function login($username, $password) {
if ($this->validate_password($username, $password)) {
$this->db->select('user_id, username, firstname, lastname, email, date_joined');
$this->db->from($this->db->dbprefix . $this->table_name);
$user_query = $this->db->get();
if ($user_query->num_rows() == 1) {
$this->session->set_userdata('user_id', $user_query->row()->user_id);
$this->user_id = $user_query->row()->user_id;
$this->username = $user_query->row()->username;
$this->firstname = $user_query->row()->firstname;
$this->lastname = $user_query->row()->lastname;
$this->email = $user_query->row()->email;
return TRUE;
} else {
return FALSE;
}
}
}
public function validate_password($username, $password) {
$stored_password = $this->get_this_users_password($username);
if (password_verify($password, $stored_password)) {
return TRUE;
} else {
return FALSE;
}
}
public function get_this_users_password($username) {
$this->db->where('username', $username);
$query = $this->db->get($this->db->dbprefix . $this->table_name);
return $query->row()->password;
}
public function get_this_users_id() {
return $this->user_id;
}
public function get_this_users_username() {
return $this->username;
}
public function get_this_users_firstname() {
return $this->firstname;
}
public function get_this_users_lastname() {
return $this->lastname;
}
public function get_this_users_email() {
return $this->email;
}
}
我看不到视图部分。我仍然得到相同的错误出现:-对象未找到!发布你的
索引
视图。你尝试过任何答案吗?别忘了接受那些有效的答案。答案对我来说很难理解。或者,如果你有一个帐户,它将更容易看到。我发布了相同的问题。我仍然可以使用相同的视图,对吗?这只是一个例子。我注意到的一件事是,您需要了解在何处加载帮助程序和库等。您已经加载了form_验证库,应将其加载到控制器上,因为您需要正确阅读此处。我注意到您在此处也更改了您的用户配置文件名。放置位置:公共函数validate_password($username,$password){//从DB$stored_password=$this->Get_this_users_password($username);if(password_verify($password,$stored_password)){返回真;}否则{返回假;}
public function __construct() {
parent::__construct();
$this->load->model('user/user_model');
$this->load->library('form_validation');
}
public function login() {
$this->form_validation->set_rules('username', 'username', 'trim|required');
$this->form_validation->set_rules('password', 'password', 'trim|required');
if ($this->form_validation->run() == FALSE) {
// login view
} else {
$login = $this->user_model->login($this->input->post('username'), $this->input->post('password'));
if ($login == true) {
redirect('some-controller');
} else {
set a error or reload login view.
}
}
}