首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Codeigniter REST通过ajax登录的正确方法

使用Codeigniter REST通过ajax登录的正确方法
EN

Stack Overflow用户
提问于 2014-08-07 22:08:42
回答 1查看 1.5K关注 0票数 1

你好,先谢谢你。我试图使用POST方法通过AJAX对用户进行身份验证,并将控制器称为"serv_resApp.php“。这里有一个方法login_post(),它获取电子邮件和密码,然后转到带有这两个参数的私有方法"checkUser“。然后转到db运行查询并返回数据,但没有得到我期望的结果。任何指导都是非常感谢的。PS:我在模型中使用了checkUser方法,但是它也不起作用,所以我移到控制器上。

这是我的实际代码:

/controllers/serv_resApp.php

代码语言:javascript
运行
复制
<?php 
  include (APPPATH.'libraries/REST_Controller.php');

  class Serv_resApp extends REST_Controller
  {
     public function __construct() {        
        parent::__construct();
     }



     function login_post()
     {
       // $this->load->model('funciones_model');
       $u = $this->input->post('e'); 
       $p = $this->input->post('p');
       $res = $this->checkUser($u, $p);
       $result = $res;
       print_r($result);
       $this->response($result, 200);
     }

     private function checkUser($u , $p)
     {
       $em = $u;
       $pa = md5($p);
       // $this->db->where('email', $em);
       // $this->db->where('password', $pa);
       $query = $this->db->query("SELECT * FROM `users` WHERE `email` = '$em' AND `password` = $pa;");

     if($query->num_rows() > 0){
         foreach($query->result() as $row){
             $data[] = $row;
         }
         var_dump($query);
         echo "true";
         return $data;
      }else{
           var_dump($query);
           return false;
      }



     }

}

代码语言:javascript
运行
复制
////// Ajax call
    $.ajax({
  url: "serv_resApp/login",
  type: 'POST',
  dataType: 'text',
  cache: false,
  data: {e:'gabriel075@mail.com',
         p:'test'},
  success: function(data){
    if (data==null) {
      alert("data == NULL");
      return false;
    }
    else{
      alert("Exito!!");
      data = $.parseJSON(data);
      alert(data);

    }
  },
  error: function(){
    alert("TEXt Error!!!");
  }
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-08 06:07:27

不要在ajax服务方法中为调试而回显或打印,而只是记录它。如果您打印,那么它将包括响应。

Javascript:

我把你的网址更正为serv_resApp/login_post

代码语言:javascript
运行
复制
$.ajax({
        url: "serv_resApp/login_post",
        type: 'POST',
        dataType: 'json',
        cache: false,
        data: {
            e: 'gabriel075@mail.com',
            p: 'test'
        },
        success: function(data) {
            console.log(data);
            if (data == null) {
                return false;
            } else {
                alert("Exito!!");
            }
        },
        error: function() {
            alert("TEXt Error!!!");
        }
    });

不要向UI发送查询响应,因为

PHP代码:

代码语言:javascript
运行
复制
function login_post() {
    // $this->load->model('funciones_model');
    $u = $this->input->post('e');
    $p = $this->input->post('p');
    $res = null; 
    if($this->checkUser($u, $p)){
           $res = array('code' => 200, 'message' => 'successs');
    }

    echo json_encode($res);
    exit;   
}

private function checkUser($u, $p) {
    $em = $u;
    $pa = md5($p);
    // $this->db->where('email', $em);
    // $this->db->where('password', $pa);
    $query = $this->db->query("SELECT email FROM `users` WHERE `email` = '$em' AND `password` = $pa;")->result_array();

    if ($query->num_rows() > 0) {
        foreach ($query as $row) {
            $data[] = $row;
        }
        //var_dump($query); echo "true"; 
        return $data;
    } else {
        //var_dump($query);
        return false;
    }
}

检查这个CI documentation

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25193085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档