簡體   English   中英

檢查是否存在用戶名不起作用

[英]Checking if Username exists not working

我認為問題與if(data == 1)有關,此刻,警報框一直說可用,而當我將其更改為=== ,警報框一直說不可用。 我不確定問題出在哪里。

這是我的register.html

                    <form name="registerform" id="registerform" action="register.php" method="post">
                        <div class="form_settings">

                            <p>
                                <label for="firstname">First Name:</label>
                                <input name="firstname" id="firstname" maxlength="32" type="text" placeholder="Optional" />
                            </p>
                            <p>
                                <label for="username" id="usernameText">Username:</label>
                                <input data-parsley-pattern="^[A-Za-z0-9_]{3,15}$" data-parsley-length="[3, 15]" name="username" id="username" maxlength="32" type="text" data-parsley-error-message="Username needs to be between 3 and 15 characters. Case sensitive. No special characters allowed." required/>
                            </p>
                            <p>
                                <label for="password1">Password:</label>
                                <input name="password1" id="password1" data-parsley-pattern="^[A-Za-z0-9_-]{5,25}$" data-parsley-length="[5, 25]" type="password" data-parsley-equalto="#password2" data-parsley-error-message="Passwords must match. Needs to be between 5 and 25 characters. Case sensitive. No special characters allowed." required/>
                            </p>
                            <p>
                                <label for="password2">Confirm Your Password:</label>
                                <input name="password2" id="password2" data-parsley-length="[5, 25]" data-parsley-error-message="Passwords must match. Needs to be between 5 and 25 characters. Case sensitive. No special characters allowed." data-parsley-pattern="^[A-Za-z0-9_-]{5,25}$" type="password" data-parsley-equalto="#password1" required/>
                            </p>
                            <p>
                                <label for="email">E-Mail:</label>
                                <input data-parsley-trigger="change" name="email" id="email" maxlength="1024" type="email" required/>
                            </p>
                            <p style="padding-top: 15px"><span>&nbsp;</span>
                                <input type="submit" class="submit" name="createacc" value="Register" />
                            </p>
                        </div>
                    </form>

這是我的javascript

        $(document).ready(function () {

            $('input[name="createacc"]').click(function (e) {
                var username = $('input[name="username"]').val();
                if (username != '') {
                    e.preventDefault();


                    $.ajax({
                        type: 'POST',
                        data: {
                            username: username
                        },
                        url: 'checkuser.php',
                        success: function (data) { //Receives the data from the php code
                            if(data == 1){  
                                //show that the username is available  
                                alert("available");
                            }else{  
                                //show that the username is NOT available  
                                alert("Unavailable");
                            }  

                        },
                        error: function (xhr, err) {
                            console.log("readyState: " + xhr.readyState + "\nstatus: " + xhr.status);
                            console.log("responseText: " + xhr.responseText);
                        }
                    });
                    $('#registerform').parsley();
                }
            });


        });

這是我的checkuser.php

<?php
define('DB_SERVER', "localhost");
define('DB_USER', "XXX");
define('DB_PASSWORD', "XXX");
define('DB_DATABASE', "XXX");   
$mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE);    
if(mysqli_connect_errno()) {
    echo "Connection Failed.";
    exit();
}
$username = mysqli_real_escape_string($_POST['username']);     
$result = mysqli_query("SELECT `username` FROM `accounts` WHERE username = '$username'");  
if(mysqli_num_rows($result)>0){  
    echo json_encode(0);   
}else{  
    echo json_encode(1);  
}      
?>

更新我已經嘗試了這篇文章的評論部分中發布的所有建議,但到目前為止沒有任何效果。 不知道該怎么辦= /

您實際上在返回的字符串中有錯誤。

2件事情: mysqli_real_escape_string() expects exactly 2 parametersmysqli_query() expects 2 parameters

現在這兩種方法都需要2個參數,並且由於您只提供了1個參數,因此它返回錯誤字符串,而不是01 因此,將您的mysqli連接變量添加為這兩種方法中的第一個參數。 這是替換代碼。

$username = mysqli_real_escape_string($mysqli, $_POST['username']);     
$result = mysqli_query($mysqli,"SELECT `username` FROM `ncs_users` WHERE username = '$username'"); 

並出於安全原因,嘗試使用參數化查詢而不是像在查詢中對$username那樣進行串聯。

你可以回來

if(mysqli_num_rows($result)>0){  
    echo json_encode(array('vaild' => false));
die;   
}
else{  
    echo json_encode(array('vaild' => true));  
}  

在javascript中設置:

$.ajax({
                        type: 'POST',
dataType: "json",
                        data: {
                            username: username
                        },
                        url: 'checkuser.php',
                        success: function (data) { //Receives the data from the php code
                            if(data.valid == true){  
                                //show that the username is available  
                                alert("available");
                            }else{  
                                //show that the username is NOT available  
                                alert("Unavailable");
                            }  

                        },
                        error: function (xhr, err) {
                            console.log("readyState: " + xhr.readyState + "\nstatus: " + xhr.status);
                            console.log("responseText: " + xhr.responseText);
                        }
                    });
                    $('#registerform').parsley();
                }
            });

我希望這能幫到您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM