[英]Else statement seems to be ignored in PHP
我正在创建登录名,但遇到了问题。 如果用户输入不正确的用户名和/或密码,我希望出现错误消息,特别是如果两者与数据库中的内容不匹配,用户将被提示他们输入了错误的用户名/密码。
似乎每当我运行代码时,我的 else 语句都会被忽略。 我的 if 语句有效,我已经测试过了。 但是无论我在 else 子句中回显什么,都不会被访问。 我试过重构与 php 相关的 js,我试过 Stack Overflow 解决类似问题的解决方案无济于事。 我已经通过单步执行测试了代码,当 if 语句为真时,“sas”被回显,当 if 不为真(else)时,“”被回显。 控制台上没有错误消息。 也许我在这里尝试的逻辑有问题。
我正在使用 Malsup 的 jQuery 表单插件异步提交登录表单。 我减少了一些非必要的(我知道的可能还有更多)html 和 js,但包含了很好的文件。
<?php
$host = "meh"; // Host name
$username = "blah"; // Mysql username
$password = "pft"; // Mysql password
$db_name = "doh"; // Database name
$tbl_name = "leh"; // Table name
// Connect to server and select databse.
$mysqli = new mysqli("$host", "$username", "$password", "$db_name");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
// username and password sent from form
$myusername = $_POST['myusername'];
$mypassword = $_POST['mypassword'];
// To protect MySQL injection
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysqli_real_escape_string($mysqli, $myusername);
$mypassword = mysqli_real_escape_string($mysqli, $mypassword);
$sql = "SELECT FirstName, Password FROM $tbl_name WHERE FirstName= ? AND Password= ? ";
//prepare and bind paramters
if ($stmt = $mysqli->prepare($sql)) {
$stmt->bind_param("ss", $myusername, $mypassword);
$stmt->execute();
$stmt->bind_result($returnedusername, $returnedpassword);
//fetch $stmt results
while ($stmt->fetch()) {
if (isset($returnedusername) && isset($returnedpassword) && $returnedusername === $myusername && $returnedpassword === $mypassword) {
session_register("myusername");
session_register("mypassword");
//header("location:login_success.php");
echo "sas";
} else {//I DONT THIS PART IS BEING RUN...NOT SURE THOUGH IF LOOKING AT WRONG PART OF CODE
echo $_POST['loginError'];//loginError found in html, will be error message
}
} //end while
} //end if
$stmt->close();
$mysqli->close();
?>
$('document').ready(function() {
var loginForm = $("#form1");
//Will load user's name into page heading (from local storage)
function storeUsername() {
window.alert("You made it in the function");//testing to see if code is run
if (typeof(Storage) != "undefined") {
// Store the user's first name as localStorage Object
var inputUsername = document.getElementById("myusername");
localStorage.username = inputUsername.value;
window.alert(localStorage.username);
}
}
var options = {
target: '#loginError',
beforeSubmit: beforeSubmit, // pre-submit callback
success: afterSuccess
};
//Submit form via ajax
// bind to the form's submit event
$('#form1').submit(function() {
// inside event callbacks 'this' is the DOM element so we first
// wrap it in a jQuery object and then invoke ajaxSubmit
$(this).ajaxSubmit(options);
return false;
});
//after succesful upload
function afterSuccess() {
var flag = $("#loginError");
var flagContents = flag.html();
if (flagContents == "sas") {
window.location.href = "login_success.php";
//remove the imgPlaceHolder element
} else {
flag.fadeIn('slow');//error message will fade In
}
}
function beforeSubmit() {
//check whether browser fully supports all File API
if (window.File && window.FileReader && window.FileList && window.Blob) {
storeUsername();
} else {
//Output error to older unsupported browsers that doesn't support HTML5 File API
alert("Please upgrade your browser, because your current browser lacks some new features we need!");
return false;
}
}
});
<!DOCTYPE html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="../js/generalJS/modernizr.custom.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
</head>
<body>
<table width="100" border="0" cellpadding="0" cellspacing="1">
<tr>
<form name="form1" id="form1" method="post" action="checklogin.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1">
<tr>
<td colspan="3"><strong> Login </strong>
</td>
</tr>
<tr>
<td>Username:
<input name="myusername" type="text" id="myusername" required> </td>
</tr>
<tr>
<td>Password:
<input name="mypassword" type="password" id="mypassword" required>
</td>
</tr>
<input type="submit" id="mySubmit" name="Submit" value="Login"></input>
<div id="loginError" name="loginError" style="display:none" value="**Username or password incorrect**"></div>
<!--Php script will provide an error is login fails. It will get the outcome from checklogin, fetch reason from "password"-->
</table>
</td>
</form>
</tr>
</table>
</body>
<script type="text/javascript">
function downloadJSOnload() {
var element1 = document.createElement("script");
element1.src = "../js/login.js";
document.body.appendChild(element1);
}
if (window.addEventListener)
window.addEventListener("load", downloadJSOnload, false);
else if (window.attachEvent)
window.attachEvent("onload", downloadJSOnload);
else window.onload = downloadJSOnload;
</script>
</html>
这是问题:
<div id="loginError" name="loginError" style="display:none" value="**Username or password incorrect**"></div>
将其更改为:
<input id="loginError" name="loginError" style="display:none" value="**Username or password incorrect**" type="hidden" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.