我是 PHP 初学者。 我的代码
<?php
session_start();
$username = "ADMIN";
$host = "localhost";
$password = "chmuhammadsohaib123";
$database = "USER";
$con = mysqli_connect($host, $username, $password, $database);
$USERNAME = $_POST["lusername"];
$PASSWORD = $_POST["lpassword"];
if (isset($_POST["login"])) {
if (isset($_POST["loggedin"])) {
setcookie("RAUSERNAME", $USERNAME);
setcookie("RAPASSWORD", $PASSWORD);
}
$_SESSION["SRAUSERNAME"] = $USERNAME;
$_SESSION["SRAPASSWORD"] = $PASSWORD;
}
if (isset($_POST["login"])) {
$data = mysqli_query($con, "SELECT * FROM `INFO` WHERE `USERNAME` = '$USERNAME'");
if (mysqli_num_rows($data)>0) {
echo "<script type='text/javascript'>window.location.replace('../');</script>";
}
else {
print("<script type='text/javascript'>document.getElementsByClassName('errors').innerHTML = '<h1 class='redback'>SORRY, BUT THIS ACCOUNT DOESN'T EXISTS</h1>';</script>");
}
}
?>
我的 HTML 页面
<body>
<div class="errors"></div>
<fieldset class="replacement">
<legend>LOGIN</legend>
<h1>LOGIN WITH YOUR INFORMATION</h1><br><br>
<form method="POST" action="<?php $_SERVER["php_self"]; ?>">
<input type="text" name="lusername" placeholder="YOUR USERNAME">
<input type="password" name="lpassword" placeholder="YOUR PASSWORD" class="password">
<br>
<br>
<label>KEEP ME LOGGED IN: </label>
<input type="checkbox" name="loggedin" checked>
<br><br>
<input type="submit" name="login" value="LOGIN"></form>
</fieldset>
</div>
</body>
</html>
当我如上所述更改错误的innerHTML时,它不会改变。它说控制台中缺少;,或者有时错误为null。我该如何修复它?
最佳答案
当您回显 JavaScript 代码时,dom 中不存在 id 为 errors
的 html 元素。因此 getElementById
的返回值将始终是未定义的。
<script>document.getElementById("errors")...</script>
... some more html
<div id="errors"></div>
您可以通过在 dom 文档准备就绪后调用 javascript 代码来解决此问题。使用 jQuery,你可以这样做
// event handler for document ready
$(function() {
// at this point, the dom is ready and the 'errors' id exists
$('#errors').html("some error message");
});
这可行,但似乎有点不必要。更好的方法是仅使用 php 回显实际的错误消息,而不使用 javascript 来执行此操作。
$error = false;
if (mysqli_num_rows($data)>0) {
header('location: ../');
} else {
$error = '<h1 class="redback">SORRY, BUT THIS ACCOUNT DOESN\'T EXISTS</h1>';
}
及以后
<div class="errors">
<?php if ($error) echo $error; ?>
</div>
关于javascript - 更改 php 错误中的innerHTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44217262/