我已经编写了一个连接到db的简单登录脚本,现在我想在我的#loginbox中插入一个带有jQuery的段落,其中“登录失败”时
if (!$row = mysqli_fetch_assoc($result))
是真的。
我的想法是:
[function.js]
function loginfailed() {
$('#loginbox').html("<p>Login failed.</p>");
}
[login.php中]
<head>
<script type="text/javascript" src="functions.js"></script>
</head>
<?php
include '../config.php';
include 'dbh.php';
session_start();
$uid = $_POST['uid'];
$pw = $_POST['pw'];
$sql = "SELECT * FROM user WHERE uid='$uid' AND pw='$pw'";
$result = mysqli_query($conn, $sql);
if (!$row = mysqli_fetch_assoc($result))
{
header('Location: ../index.php');
echo '<script> loginfailed(); </script>';
}
else
{
header('Location: ../index.php');
}
?>
但它不起作用。
答案 0 :(得分:1)
请勿在普通文本中存储密码!!
关于你的问题。
头函数重定向到index.php并且不执行echo。一个解决方案可以是添加一个$ _GET参数,并在重定向后检查它是否存在并回显消息或用JS附加它。
if (!$row = mysqli_fetch_assoc($result))
{
header('Location: ../index.php?status=fail');
}
在底部的index.php
文件中(如果你想使用JS / jQuery来显示消息)
<script>
var status = "<?php echo (!empty($_GET['status']) && $_GET['status'] === 'fail') ? 0 : 1; ?>";
if(!status) loginfailed();
</script>
答案 1 :(得分:0)
谢谢大家,但我已经在Allkin的帮助下找到了自己的解决方案。
我的标题现在重定向到
header('Location: ../index.php?status=fail');
我的#loginbox检查状态是否已设置,然后执行我的loginfailed()函数。
if(isset($_GET['status'])) {
echo '<script> loginfailed(); </script>';
}
没那么容易!
感谢大家的帮助。