简体   繁体   English

如何在表单验证中使用数据库数据?

[英]how can I use database data in form validation?

Hi I have a form that using database to validation, Now validation just working for latest database data, What should i do to validate for each of data. 嗨,我有一个使用数据库进行验证的表格,现在验证仅适用于最新的数据库数据,我应该怎么做才能验证每个数据。

DB information 数据库信息 http://s1.upload7.ir/downloads/5FzySgwq3DghG9Yw38xa9h773Hsozxst/db.jpg

demo-form.php 演示form.php的

<form name="login1" action="demo-login.php" onsubmit="return validateForm1()" method="post" id="form1">
<p>user name: <input type="text" name="luser" id="luser"/></p>
<p>password: <input type="password" name="lpass" id="lpass" /></p>
<input type="submit" value="login" name="submit"/>
</form>

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "users";

$conn2 = new mysqli($servername, $username, $password, $dbname);

if ($conn2->connect_error) {
     die("Connection failed: " . $conn2->connect_error);
} 


$sql2 = "SELECT * FROM users";
$result2 = $conn2->query($sql2);

if ($result2->num_rows > 0) {

     while($row = $result2->fetch_assoc()) {
         $luser = $row["user"];
         $lpass = $row["pass"];
     }
} else {
echo "err_2";
}

$conn2->close();
?> 

<script>
function validateForm1(){
var luser = document.getElementById("luser").value;
var lpass = document.getElementById("lpass").value;
        if (luser == "" || lpass == ""){
            document.getElementById("luser").placeholder="Fill, it's necessary";
            document.getElementById("lpass").placeholder="Fill, it's necessary";
            return false;
        }
        if (luser !== "<?php echo $luser; ?>" || lpass !== "<?php echo $lpass; ?>"){
            alert("user or pass is not true");
            return false;
        }
}
</script>

It looks like you are using the IDs "luser" and "lpass" multiple times. 好像您多次使用ID“ luser”和“ lpass”。 You cannot allocate markup IDs multiple times. 您不能多次分配标记ID。 Use classes instead and select with those. 改用类,然后选择它们。

See getElementsByClassName 请参见getElementsByClassName

I Found my answer that using php ajax. 我发现我的答案是使用php ajax。 i hope it helps to other people. 我希望它对其他人有帮助。

demo-form.php 演示form.php的

<form name="login1" action="demo-login.php" onsubmit="return validateForm1()" method="post" id="form1">
<p>user name: <input type="text" name="luser" id="luser" onmouseleave="showUser(this.value)" onchange="showUser(this.value)"/></p>
<p>password: <input type="password" name="lpass" id="lpass" /></p>
<input type="submit" value="login" name="submit"/>
</form>
<div id="passh"></div>


<script>
function validateForm1(){
var luser = document.getElementById("luser").value;
var lpass = document.getElementById("lpass").value;
    if (luser == "" || lpass == ""){
        document.getElementById("luser").placeholder="Fill, it's necessary";
        document.getElementById("lpass").placeholder="Fill, it's necessary";
        return false;
    }
    if (lpass !== document.getElementById("passh").value){
        alert("user or pass is not true");
        return false;
    }
}

function showUser(str) {
    if (str == "") {
        document.getElementById("lpass").placeholder="";
        return;
    } else { 
        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
        } else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    document.getElementById("passh").value = xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET","loginpass.php?q="+str,true);
        xmlhttp.send();
    }
}
</script>

loginpass.php loginpass.php

<?php
$q = $_GET['q'];

$con = mysqli_connect('localhost','root','','users');
if (!$con) {
    die('Could not connect: ' . mysqli_error($con));
}

mysqli_select_db($con,"ajax_demo");
$sql="SELECT * FROM users WHERE user = '". $q ."' ";
$result = mysqli_query($con,$sql);

while($row = mysqli_fetch_array($result)) {
    echo  $row['pass'] ;
}

mysqli_close($con);
?>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM