在PHP“If”语句中插入带有jQuery的段落

时间:2016-11-01 10:43:49

标签: javascript php jquery

我已经编写了一个连接到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');
    }
?>

但它不起作用。

2 个答案:

答案 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>';
}    

没那么容易!

感谢大家的帮助。