2013-12-09 103 views
-2

我尽量去实现简单的登录应用程序,我得到这个笨错误,但是当我插入的电子邮件和密码登录形式,它以相同的形式作出回应,我无法登录笨简单登录错误

这是我的模型功能:

class User_model extends CI_Model { 
public function __construct() 
{ 
    parent::__construct(); 
} 
function login($email,$password) 
{ 
    $this->db->where("email",$email); 
    $this->db->where("password",$password); 

    $query=$this->db->get("user"); 
    if($query->num_rows()>0) 
    { 
    foreach($query->result() as $rows) 
    { 
    //add all data to session 
    $newdata = array(
     'user_id' => $rows->id, 
     'user_name' => $rows->username, 
     'user_email' => $rows->email, 
     'logged_in' => TRUE, 
    ); 
    } 
    $this->session->set_userdata($newdata); 
    return true; 
    } 
    return false; 
    } 

控制器:

class User extends CI_Controller{ 
public function __construct() 
{ 
    parent::__construct(); 
    $this->load->model('user_model'); 
} 

public function index() 

{ 
    if(($this->session->userdata('user_name')!="")) 
    { 
    $this->welcome(); 
    } 
    else{ 
    $data['title']= 'Home'; 
    $this->load->view('header_view',$data); 
    $this->load->view("registration_view.php", $data); 
    $this->load->view('footer_view',$data); 
    } 
} 
public function welcome() 
{ 
    $data['title']= 'Welcome'; 
    $this->load->view('header_view',$data); 
    $this->load->view('welcome_view.php', $data); 
    $this->load->view('footer_view',$data); 
} 
public function login() 
{ 
    $email=$this->input->post('email'); 
    $password=md5($this->input->post('pass')); 

    $result=$this->user_model->login($email,$password); 
    if($result) $this->welcome(); 
    else  $this->index(); 
} 

查看:

<div id="content"> 
<div class="signup_wrap"> 
<div class="signin_form"> 
<?php echo form_open("user/login"); ?> 
    <label for="email">Email:</label> 
    <input type="text" id="email" name="email" value="" /> 
    <label for="password">Password:</label> 
    <input type="password" id="pass" name="pass" value="" /> 
    <input type="submit" class="" value="Sign in" /> 
+0

您确定密码未加密? – sulmanpucit

+0

会发生什么?你尝试了什么,结果如何?当你回应新添加的变量等时会发生什么? – James

+0

当我输入电子邮件和密码它回应一个明确的形式,并不能直接到其他功能,我发现mySql数据库加密为电子邮件= 0和密码= 9193ce – user3046785

回答

1

用户注册如何?您正在检查user_name会话变量以查看它是否为空,而不是电子邮件,这是实际输入的内容,以显示欢迎屏幕。电子邮件和密码,可以在你的数据库完全填充,但因为你正在检查的用户名称,而不是在您的条件:

if(($this->session->userdata('user_name')!="")) 

如果出来的空白,你会看到你的索引() 如果您坚持使用此方法,请确保填充用户表中的用户名列。或者说,在此条件使用电子邮件,而不是列,whcih给您的实现,我会建议,因为他们是一个电子邮件地址,而不是用户名登录(这意味着一个单一的名称,而不是电子邮件地址)

if(($this->session->userdata('user_email')!="")) 

另外,您也可以检查您的logged_in会话变量,这就是它的用途。仍然会通过您的代码来查找其他问题,但那些问题会作为潜在的问题区域提供给我。

更多关于您的信息肯定会对您有所帮助。你是否已经抛出会话数据或行数据来查看实际返回的内容?电子邮件= 0没有意义

+0

谢谢你我的建议,但我仍然得到了同样的问题 。 – user3046785