0

我只想用 AngularJS 或 AJAX 或 JQuery 或任何最简单的方法告诉用户用户名和电子邮件已经注册。

我已经为其他检查实现了 AngularJS,而不是那些需要 php 的检查。

这是我的php函数:

public function user_exists() {

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

$data = array(
    'username' => $username,
    'email' => $this->db->escape($this->input->post('email')),
    'password' => crypt($this->db->escape($this->input->
post('password'))),
'user_id' => md5('I really like pie, '. $username)
            );

$does_user_exist = "SELECT COUNT(`user_id`) FROM `users` WHERE 
    `username` = " . $data['username'] . " || `email` = " . 
$data['email'] . "";

$query = $this->db->query($does_user_exist);

if($query->num_rows() > 0) {
    return true;
}
}

谢谢,麻烦您了。

4

2 回答 2

0

为什么$data在方法中使用数组?要检查是否存在用户,您需要使用 MVC 架构和类似此代码的东西。对于型号:

class User_Model extends CI_Model
{

    public function is_exists($username, $email)
    {
        $this->db->select('user_id');
        $this->db->where(array(
            'username' => $username,
             'email' => $email
        ));
        $this->db->limit(1);
        return $this->db->get('users')->row('user_id');
    }
}

此控制器代码:

class User extends CI_Controller
{

   public function is_exists()
   {
        $email = $this->input->post('email');
        $username = $this->input->post('username');
        $this->load->model('user_model');
        if(!$this->user_model->is_exists($username, $email))
        {
             $result = array('status' => 200, 'message' => 'Username and email are free');
        }
        else
        {
            $result = array('status' => 400, 'reason' => 'User already exists');
        }
        echo json_encode($result);
   }
}

阿贾克斯查询:

$.ajax({
    url: 'user/is_exists',
    type: 'POST',
    dataType: 'JSON',
    data: {username: username, email: email},
    success: function(data, status, jqXHR){
        if(data.status == 200){
            alert(data.message);
        }
        else{
            alert(data.reason);
        }
    }
});

usernameemailjs 变量,您需要从您的注册表单中获取。您也可以使用Ion AuthTank Auth扩展

于 2013-09-15T20:17:41.213 回答
0

当用户单击注册表单上的提交按钮时,使用 jQuery 中的 $.post() 提交它。表单的 action 属性应该映射到适当的控制器/方法。您调用的方法可以返回 JSON 编码的消息以显示在浏览器中。

它可能看起来像这样:

$(function() {
    $('#registration', 'input[type="submit"]').on('click', function(event) {
        event.preventDefault();
        var action = $(this).closest('form').attr('action');
        var form = $(this).closest('form').serialize();
        $.post(action, form, function(data) {
           alert(data.message); 
        });
    });
});

在上面的示例中,表单的 ID 是#registration。JS var 'data' 是您的 PHP 方法返回的 JSON 对象,而 'message' 是该对象的属性,其中包含要显示给用户的消息。

于 2013-09-15T20:19:41.373 回答