检查控制器中是否存在现有用户名,如果已存在则重定向到查看页面

时间:2013-05-19 09:23:55

标签: php codeigniter-2

我有以下用户名查找功能,用于检查用户名是否可用。

<script language="javascript">
function lookUpUsername(){
    var name = document.getElementById('username').value;
    //alert(name);
    $.post( 
        'users/ajax_lookUpUsername',
        { username: name },
        function(response) {  
            if (response == 1) {
                //  alert('username available');
            } else {
                // setTimeout("alert("Here I am!")", 5000);
                alert('Username Already Taken! Please Select Another Name.');
            }
        }); 
    }
</script>

这是我在控制器中的AJAX_lookUpUsername函数:

function ajax_lookUpUsername(){
    $username = $this->input->post('username');
    $this->db->where('username', $username);
    $query = $this->db->get('mcb_users');
    if ($query->num_rows() > 0){
        echo 0;
    } else {
        echo 1;
    }

代码工作正常。当用户输入现有用户名时,它会显示一条警告消息,但是,当用户继续而不修改它并单击保存按钮时,它会被保存!

在从控制器保存到数据库之前,有没有办法重定向用户?

1 个答案:

答案 0 :(得分:0)

您也可以使用onsubmit表单验证来执行此操作。但是,还有另一种方法。 您也可以通过控制器执行此操作。在将数据插入数据库之前,在控制器的保存功能中添加以下代码:

    $userarraydb = $this->mdl_users->getAllusername();
    foreach($userarraydb as $dbusersname)
    {
        if(($dbusersname->text == $username) && ($dbusersname->id != $user_id) )
        {   
            //echo $this->lang->line('user_name_must_be_unique');
            //sleep(1);
        ?>  <script> alert('Record can not be saved! Username must be unique.'); </script> <?php
            return false;

        }


    }

并将以下功能添加到您的用户模型中:

function getAllusername()
    {
        $teller_id = $this->session->userdata('user_id');   
        $this->db->select('username as text, id as id');
        $this->db->from('mcb_users'); 
        $result = $this->db->get();
        $username = $result->result();
        //all user name taneko cha
        return $username;
    //  return $result->result();

    }