这是我在codeigniter中的登录代码...它没有登录,只是它在jquery响应中显示了结果?此代码有什么问题? 我已经编写了控制器,模型并为此使用了jQuery。
控制器(login.php)页面
function validate_credentials(){
$username = $this->input->post('username');
$password = $this->input->post('passwd');
$data = $this->login_model->validate();
if($data){
$this->session->set_userdata('username',$data);
redirect('site/math_page');
}
else{
echo'something went wrong';
}
}
模型(login_model.php)页面
function validate() {
$this->db->select('*');
$this->db->from('user_details');
// $this->db->where('user_email',$email);
// $this->db->where('user_password',$pass);
if($query=$this->db->get())
{
return $query->result_array();
}
else{
return false;
}
}
登录jquery
$(document).ready(function() {
//login js..
$("#login_submit").click(function(){
var username = $("#username").val().trim();
var passwd = $("#passwd").val().trim();
//alert(username);
if( username == "" && passwd == "" ) {
$(".lognerror").html("Please enter Login credentials!");
$(".lognerror").show().fadeOut(3000);
}
else if( username == "" ) {
$(".usererror").html("Please enter username");
$(".usererror").show().fadeOut(3000);
}
else if ( passwd == "" ) {
$(".passwrderr").html("Please Enter Password");
$(".passwrderr").show().fadeOut(3000);
}
else {
$.ajax({
url: base_url+'index.php/login/validate_credentials',
data:{username:username,passwd:passwd},
cache: false,
processData: false,
contentType: false,
type: 'POST',
success: function (response) {
// do something with the result
//var msg = "";
//alert(msg);
if(response == 1){
window.location.href= base_url+'index.php/site/math_page';
}
else {
msg = "Invalid Login credentials!";
}
//$("#message").html(msg);
$("#message").show().fadeOut(3000);
}
});
}
});
});
有人可以告诉我这段代码有什么问题。我是php的新手,所以请指导我完成此操作
答案 0 :(得分:1)
发送$ username和$ password作为validate()中的参数。并在模型中应用where子句。并在IF条件下使用$ query-> num_rows()> 0。
在模型中-
function validate($email, $pass) {
$this->db->select('*');
$this->db->from('user_details');
$this->db->where('user_email',$email);
$this->db->where('user_password',$pass);
$query=$this->db->get()
if($query->num_rows() > 0) {
return $query->result_array();
}
else{
return false;
}
}
在控制器中-
替换
$data = $this->login_model->validate();
使用
$data = $this->login_model->validate($username, $password);
更改控制器中的响应
if($data){
$this->session->set_userdata('username',$data);
echo 1;
}
else{
echo 0;
}