Javascript 如果使用用户名,则阻止用户注册

Javascript 如果使用用户名,则阻止用户注册,javascript,php,jquery,Javascript,Php,Jquery,所以,我的脚本完美地检查用户名是否是免费的,但不管用户提交他能够注册的所有表单。我需要一种方法,以防止用户注册,如果用户名是采取。代码如下: index.php $("#username").keyup(function(){ var val=$("#username").val(); $("#address").html("Your address will be askfolio.com/" + val); $("#freeu").html("<img src

所以,我的脚本完美地检查用户名是否是免费的,但不管用户提交他能够注册的所有表单。我需要一种方法,以防止用户注册,如果用户名是采取。代码如下:

index.php

$("#username").keyup(function(){
    var val=$("#username").val();
    $("#address").html("Your address will be askfolio.com/" + val);

    $("#freeu").html("<img src='css/ajax-loader.gif' style='margin-left:-75px;'>");
    if (val != ''){
        $.ajax({
            url:"s/ufree.php",
            method:"POST",
            data:$("#username"),
            success:function(data){
                if (data == 1){
                    $("#freeu").html("<img src='css/accept.png' style='float:left;padding-right:65px;'>");
                    $("#reg-error").css("display","none");

                }else{
                    $("#freeu").html('');
                    $("#reg-error").css("display","block");
                    $("#reg-error").html('Username is already taken, try another.');
                    $("#username").focus();
                    return false;
                }

            }
        });

    }else {
        $("#freeu").html('');
    }


});
function Users_Registration() 
{
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    var name = $("#name").val();
    var lastname=$("#lastname").val();
    var username = $("#username").val();
    var remail = $("#remail").val();
    var rpass = $("#rpass").val();
    var day=$("#day").val();
    var month=$("#month").val();
    var year=$("#year").val();


    if(name == "")
    {
        $("#reg-error").css("display","block");
        $("#reg-error").html('Please enter your name in the required field.');
        $("#name").focus();
    }

    else if(lastname == "")
    {
        $("#reg-error").css("display","block");
        $("#reg-error").html(' Please enter your Last Name in the required field.');
        $("#lastname").focus();
    }
    else if(username == ""){
        $("#reg-error").css("display","block");
        $("#reg-error").html('Please enter your desired username to proceed.');
        $("#username").focus();
    }
    else if(remail == "")
    {
        $("#reg-error").css("display","block");
        $("#reg-error").html('Please enter your email address to proceed.');
        $("#remail").focus();
    }
    else if(reg.test(remail) == false)
    {
        $("#reg-error").css("display","block");
        $("#reg-error").html('Please enter a valid email address to proceed.');
        $("#remail").focus();
    }else if (rpass == "") {
        $("#reg-error").css("display","block");
        $("#reg-error").html('Please enter a valid password to proceed.');
        $("#rpass").focus();
    }
    else if (day == ""){
        $("#reg-error").css("display","block");
        $("#reg-error").html('Please select a day to proceed.');
        $("#day").focus();

    }else if (month == "") {
        $("#reg-error").css("display","block");
        $("#reg-error").html('Please select a month to proceed.');
        $("#month").focus();
    }else if (year == "") {
        $("#reg-error").css("display","block");
        $("#reg-error").html('Please select a year to proceed.');
        $("#year").focus();
    }
    else
    {
        var dataString = 'name='+ name + '&lastname='+ lastname + '&username='+ username + '&rpass='+ rpass + '&remail='+ remail + '&year=' + year + '&month=' + month + '&day=' + day  +'&page=signup';
        $.ajax({
            type: "POST",
            url: "register.php",
            data: dataString,
            cache: false,
            beforeSend: function() 
            {
                $("#reg-error").html('<br clear="all"><div style="padding-left:115px;"><font style="font-family:Verdana, Geneva, sans-serif; font-size:12px; color:black;">Please wait</font> <img src="images/loadings.gif" alt="Loading...." align="absmiddle" title="Loading...."/></div><br clear="all">');
            },
            success: function(response)
            {
                $("#reg-error").html("Loading");
                var username="<?php echo $loguser; ?>";
                window.location=username;
            }
        });
    }
}
$(“#用户名”).keyup(函数(){
var val=$(“#用户名”).val();
$(“#address”).html(“您的地址将是askfolio.com/”+val);
$(“#freeu”).html(“”);
如果(val!=''){
$.ajax({
url:“s/ufree.php”,
方法:“张贴”,
数据:$(“#用户名”),
成功:功能(数据){
如果(数据==1){
$(“#freeu”).html(“”);
$(“#注册错误”).css(“显示”、“无”);
}否则{
$(“#freeu”).html(“”);
$(“#reg error”).css(“显示”、“块”);
$(“#reg error”).html('用户名已被占用,请尝试另一个');
$(“#用户名”).focus();
返回false;
}
}
});
}否则{
$(“#freeu”).html(“”);
}
});
函数用户注册()
{
变量reg=/^([A-Za-z0-9\-\.])+\@([A-Za-z0-9\-\.])+\.([A-Za-z]{2,4})$/;
var name=$(“#name”).val();
var lastname=$(“#lastname”).val();
var username=$(“#username”).val();
var remail=$(“#remail”).val();
var rpass=$(“#rpass”).val();
var day=$(“#day”).val();
var month=$(“#month”).val();
var year=$(“#year”).val();
如果(名称==“”)
{
$(“#reg error”).css(“显示”、“块”);
$(“#reg error”).html('请在必填字段中输入您的姓名');
$(“#名称”).focus();
}
else if(lastname==“”)
{
$(“#reg error”).css(“显示”、“块”);
$(“#reg error”).html('请在必填字段中输入您的姓氏');
$(“#lastname”).focus();
}
否则如果(用户名==“”){
$(“#reg error”).css(“显示”、“块”);
$(“#reg error”).html('请输入所需用户名以继续');
$(“#用户名”).focus();
}
else if(remail==“”)
{
$(“#reg error”).css(“显示”、“块”);
$(“#reg error”).html('请输入您的电子邮件地址以继续');
$(“#remail”).focus();
}
否则如果(注册测试(remail)=false)
{
$(“#reg error”).css(“显示”、“块”);
$(“#reg error”).html('请输入有效的电子邮件地址以继续');
$(“#remail”).focus();
}else if(rpass==“”){
$(“#reg error”).css(“显示”、“块”);
$(“#reg error”).html('请输入有效密码以继续');
$(“#rpass”).focus();
}
否则,如果(天==“”){
$(“#reg error”).css(“显示”、“块”);
$(“#reg error”).html('请选择一天继续');
$(“日”).focus();
}如果(月份==“”),则为else{
$(“#reg error”).css(“显示”、“块”);
$(“#reg error”).html('请选择一个月继续');
$(“#月”).focus();
}否则,如果(年份==“”){
$(“#reg error”).css(“显示”、“块”);
$(“#reg error”).html('请选择一年继续');
$(“#年”).focus();
}
其他的
{
var dataString='name='+name+'&lastname='+lastname+'&username='+username+'&rpass='+rpass+'&remail='+remail+'&year='+year+'&month='+month+'&day='+day+'&page=signup';
$.ajax({
类型:“POST”,
url:“register.php”,
数据:dataString,
cache:false,
beforeSend:function()
{
$(“#reg error”).html('
请稍候
); }, 成功:功能(响应) { $(“#reg error”).html(“加载”); var username=“”; window.location=用户名; } }); } }
ufree.php

<?php

include "db.php";

if (isset($_POST['username'])) {
    $username=$_POST['username'];

    $sql=mysql_query("SELECT * FROM users WHERE username='$username'");
    if (mysql_num_rows($sql) == 0) {
        echo "1";
    }else {
        echo "<div style='padding-top:4px;'>username is taken</div>";
    }

}
?>

除了SQL查询中存在SQL注入漏洞外,您的用户名检查方法有些冗余。通过在每次输入字符时检查用户名,可以向浏览器和服务器添加额外的负载


我建议您将这两个过程合并在一个步骤中,这意味着您要在同一个位置进行用户名检查和注册。在您的
Register.php
文件中,在注册之前检查用户名的可用性,如果使用了用户名,则显示正确的消息,如果没有,则进行注册

不用说,但是不管javascript验证如何,服务器仍然需要在注册时检查用户名是否可用,因为任何人都可以禁用或操作javascript

正如Hamed所说,您的php代码非常容易受到攻击。至少,在sql中使用之前,您应该先使用以下内容:

$username=mysql\u real\u escape\u字符串($\u POST['username'])

也就是说,为了可用性,您需要做的是在表单中添加一个onsubmit函数,在提交之前检查用户名是否有效。(为了简单起见,总结了您的代码)

然后以您的形式:

<form action="whatever" onsubmit="return formsubmit();">
...
</form>

...

我最喜欢的jQuery插件之一是验证引擎

它有很好的验证功能,可以实现您想要的功能。它执行各种字段,包括用于用户名检查的内联ajax。如果来自ajax调用的响应不正确,那么表单将不会提交。我把它用于我的注册表格。一旦用户进入下一个验证字段,如果未通过,即用户名不可用,它将以红色显示用户名不可用。表格不会提交

设置起来并不难。这里是ajax的一个演示。注意,它实际上不会在这个演示站点上进行验证,但这只是一个示例。您可以看到,如果它为空或未经验证,它将如何不提交。这是非常可定制的

当然要注意mysql的安全问题,并检查t
<form action="whatever" onsubmit="return formsubmit();">
...
</form>