如何让用户知道该名称已经存在

时间:2011-08-26 17:04:20

标签: php

新程序员 - 我创建了一个将用户添加到数据库的功能。此功能可在USER类中找到。我已经设置了mysql以将user_name作为唯一键。如果用户尝试输入已存在的名称,则不会将其输入到mysql数据库中,但我的表单显示确定已提交,只是移动到下一页。我想让用户知道该名称已存在,并在注册表单上创建错误。有没有办法将其附加到此函数?

 function add_member($name, $email, $password)
        {
            global $mysqli;

            $query = "INSERT INTO members
                      SET 
                      user_name = '".addslashes($name)."',
                      user_email = '".addslashes($email)."',
                      password = '". md5($password) ."'";

            $success = $mysqli->query ($query);       

            if (!$success || $mysqli -> affected_rows == 0)
            {
                echo "<p> An error occurred: you just are not tough enough!!! </p>";
                return FALSE;
            } 
            $uid = $mysqli -> insert_id;
            return $uid;
            if (!$found_error)
            {
            header("location: homepage.php");
            }

3 个答案:

答案 0 :(得分:0)

在用户输入所需的用户名以检查其是否可用后,为什么不进行Ajax调用?更确切地说,它可能是这样的:

<form id="registration_form" action="register">
    <input id="username" type="text" onchange="checkAvailability();"/> 
    <div id="availability"></div>
</form>

<script type="text/javascript>
    function checkAvailability()
    {
        $.ajax({
            type: "GET",
            url: "checkAvailability.php",
            data: $("username").val(),
            success: function(response) {
                var status = $(response).find('status').text();
                if (status == 'failed') $("#availability").html("This username is not available!");
                else $("#availability").html("This username is available!");
            },
            dataType: "xml"
        });  
    }    
</script>

答案 1 :(得分:0)

你很接近,但不是仅仅进行插入,而是先尝试通过对名称进行选择来检查用户。如果记录计数大于零,您就知道它已经存在。

然后要么提出javascript警报,要么将其发送到另一页(如果已经存在),否则继续执行插入操作。这样你就不依赖于数据库为你做检查,然后你可以更好地控制接下来发生的事情。

祝你好运和HTH - 乔

答案 2 :(得分:0)

为了防止重定向,您必须通知您的前端有错误。

只要用户点击“提交”,您的表单就会始终尝试“转到下一页”。它将执行任何设置的操作。

在该操作中(我假设是该过程的下一页),您应该让页面处理错误 - 即:

<?php     //results.php
    if(false === add_member($name, $email, $password)){
       //you may want to write code that sends post data with error type here... 
       header("location:create_user.php");
    }
?>

请注意,使用标题重定向有点不太优雅,但是如何处理错误的最佳做法超出了这个问题的范围......

我的观点是,您必须在结果页面上捕获错误,并让该页面处理失败的尝试。