Php 身份验证功能不工作-CodeIgniter

Php 身份验证功能不工作-CodeIgniter,php,codeigniter,Php,Codeigniter,我有下面的代码来验证应用程序的用户身份。我已经能够在系统上注册用户,但在尝试使用正确的详细信息登录后,我的身份验证代码无法将用户重定向到应用程序。该页面仅将用户重定向回登录页面,即使我使用了正确的用户详细信息 控制器 var $salt = '%&)#$sfsf(abm@009011'; function authenticate() { $username = $this->input->post('username'); $this->db-

我有下面的代码来验证应用程序的用户身份。我已经能够在系统上注册用户,但在尝试使用正确的详细信息登录后,我的身份验证代码无法将用户重定向到应用程序。该页面仅将用户重定向回登录页面,即使我使用了正确的用户详细信息

控制器

var $salt = '%&)#$sfsf(abm@009011';

 function authenticate() {

    $username = $this->input->post('username');

    $this->db->where('phone', $username);
    $password =  $this->db->where('password', md5(crypt($this->input->post('password'), $this->salt)));
    $query = $this->db->get('user_login');        
    if ($query->num_rows = 1) {
        //echo "success";
         return true;
    } else
        return false;
    }
我在代码方面还会犯什么错误?
PS:CodeIgniter初学者

您分配的不是比较,您应该使用
=
而不是
=

if ($query->num_rows == 1) {
}

如果不进行比较,则应使用
=
而不是
=

if ($query->num_rows == 1) {
}

不要使用
var
=
来比较
if()
语句中的值

$salt = '%&)#$sfsf(abm@009011';

 function authenticate() {

    $username = $this->input->post('username');

    $this->db->where('phone', $username);
    $password =  $this->db->where('password', md5(crypt($this->input->post('password'), $this->salt)));
    $query = $this->db->get('user_login');        
    if ($query->num_rows() == 1) {
        //echo "success";
         return true;
    } else
        return false;
    }

不要使用
var
=
来比较
if()
语句中的值

$salt = '%&)#$sfsf(abm@009011';

 function authenticate() {

    $username = $this->input->post('username');

    $this->db->where('phone', $username);
    $password =  $this->db->where('password', md5(crypt($this->input->post('password'), $this->salt)));
    $query = $this->db->get('user_login');        
    if ($query->num_rows() == 1) {
        //echo "success";
         return true;
    } else
        return false;
    }


好的..谢谢,但我仍然无法重定向到应用程序。它将我重定向回登录页面打印查询,并检查所有事情是否按照您的预期进行。当我打印
query
时,我不会返回任何结果,但当我在
if()之前回显
$query->num_rows
时,我会得到
1
statement好的..谢谢,但我仍然无法重定向到应用程序中。它将我重定向回登录页面打印查询,并检查所有事情是否按照您的预期进行。当我打印
query
时,我不会返回任何结果,但当我在
if()之前回显
$query->num_rows
时,我会得到
1
statement好的..谢谢,但我仍然无法重定向到应用程序中。它将我重定向回登录页面在
if()
语句之前,这个
echo$query->num_rows
的结果是什么?结果是
1
@RoboPHP它应该是
$query->num_rows()
而不是
$query->num_rows
好的,如果你直接发布数据,我的意思是,您不是从ajax调用函数,那么您可以使用:redirect(‘您的控制器名称’)而不是returntrue语句;好的..谢谢,但我仍然无法重定向到应用程序。它将我重定向回登录页面在
if()
语句之前,这个
echo$query->num_rows
的结果是什么?结果是
1
@RoboPHP它应该是
$query->num_rows()
而不是
$query->num_rows
好的,如果你直接发布数据,我的意思是,您不是从ajax调用函数,那么您可以使用:redirect(‘您的控制器名称’)而不是returntrue语句;在没有看到更多代码的情况下很难判断错误(除了使用赋值运算符而不是比较运算符)。您只是返回了一个真/假值,但我们不知道您之后在用它做什么。您是否正在生成包含登录用户数据的会话?您的控制器是否检查数据以“决定”是否允许您访问其方法?另外,我强烈建议更改您选择的密码散列的非常不安全的方式(使用password_散列而不是crypt+md5+static salt,这实际上是非常不安全的),在看不到更多代码的情况下很难判断错误(除了使用赋值运算符而不是比较运算符)。您只是返回了一个真/假值,但我们不知道您之后在用它做什么。您是否正在生成包含登录用户数据的会话?您的控制器是否检查数据以“决定”是否允许您访问其方法?另外,我强烈建议您改变散列密码的非常不安全的方式(使用password_散列而不是crypt+md5+静态salt,这实际上是非常不安全的)