簡體   English   中英

Javascript通過實時輸出驗證PHP上的用戶名

[英]Javascript validate username on PHP with realtime output

我想使用Javascript驗證我的輸入用戶名是否正確或是否實時顯示結果。 這是index.html代碼:

<html>
<head>
<script>
function showHint(str){
    if(str.length == 0){
        document.getElementById("hint").innerHTML = "";
    }else{
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function(){
            if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
                document.getElementById("hint").innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open("POST", "demo3.php?input=" + str, true);
        xmlhttp.send();
    }
}
</script>
</head>
<body>

Type a username: <br>
<input id="hint" type="text" name="username" oninput="showHint(this.value)"><p id="hint"></p>

</body>
</html>

這是demo3.php代碼:

<html>
<head>

</head>
<body>
<?php
$mysqli = new mysqli("localhost","root","123456","mini");

$username = $mysqli->real_escape_string($_REQUEST['input']);
$sql = "SELECT username FROM `users` WHERE username='$username'";
    $result = $mysqli->query($sql);
    if($result->num_rows){
        echo "Valid username";
    }else{
        echo "Invalid username";
    }

?>

</body>
</html>

我使用了w3cschools的oninput事件示例,我想知道為什么我的結果沒有顯示我的期望? 而且,如果我為$ username分配了靜態變量,則demo3.php結果似乎是正確的反饋,而不是index.html的反饋。

另外,我想知道如何在同一驗證php文件中驗證多種形式,例如密碼和電子郵件。 例如:

input1 -> check username ->output check result
input2-> check password ->output check result
input3-> check email->output check result

javascript的新手。所有教程似乎都只提供一個演示,而不提供多個示例。

問題是您使用ID“提示”兩次。 ID是唯一的標識符,因此您永遠不能在同一頁面中多次使用它。 而且,您應該避免使用內聯處理程序。 您需要將JavaScript更改為:

<script>
window.onload = function() {
 function showHint(str){
    if(str.length == 0){
        document.getElementById("hint").innerHTML = "";
    }else{
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function(){
            if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
                document.getElementById("hint").innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open("POST", "demo3.php?input=" + str, true);
        xmlhttp.send();
    }
 }

 document.getElementById("hintInput").onkeyup = function() {
  showHint(this.value)
 }
}
</script>

和您的HTML:

<input id="hintInput" type="text" name="username"><p id="hint"></p>

如果在關閉body標簽之前放置了腳本標簽,則可以擺脫window.onload

由於您將輸入內容放置在URL中,因此您將需要使用POST (不使用URL)以外的GET參數:

xmlhttp.open("GET", "demo3.php?input=" + str, true);

現在它應該可以為$_REQUEST['input']$_GET['input']提取input

暫無
暫無

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

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