如何在CodeIgniter中动态发布我的消息?

时间:2013-09-15 19:53:03

标签: javascript php jquery codeigniter angularjs

我只想告诉用户使用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;
}
}

请,谢谢你。

2 个答案:

答案 0 :(得分: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查询:

$.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);
        }
    }
});
您需要从注册表单中获取

usernameemail个js变量。 您也可以使用Ion AuthTank Auth扩展程序

答案 1 :(得分: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'是该对象的属性,包含要显示给用户的消息。