2017-07-06 91 views
0

好了,这里是我的代码如何重定向到另一个PHP文件使用javacript

<?php 
$cn = new mysqli ("localhost", "root", "root", "dbsam"); 
$username = isset ($_POST['username']) ? $_POST['username']:""; 
$password = isset ($_POST['password']) ? $_POST['password']:""; 
$sql = "SELECT * FROM tbluser WHERE username=? AND password=?"; 
$upass = hash("SHA256", $password); 
$qry = $cn->prepare($sql); 
$qry->bind_param("ss", $username, $upass); 
$qry->execute(); 
$qry->fetch(); 
if ($qry->num_rows()==1) { 
    echo "Logged in!"; 
} 
else { 
    echo "<script>alert('Account did not match the database records!')</script>>"; 
    header ("location: login.php"); 
} 
?> 

如果用户名和密码不匹配,一个警告框将出现。所以问题是它不再出现它只执行我放在它下面的标题,但如果我删除标题,将出现警报对话框。我希望显示警告框,然后用户将被重定向到登录页面。我怎样才能做到这一点?万分感谢!

+0

你需要使用Javascript来执行重定向,如果你想警告出现,请参阅像这样:https://stackoverflow.com/a/506004/7956549 – stevenkellow

+0

可能会更好地显示一个内容块(div)几秒钟,如闪光消息,然后几秒钟后重定向用户。 – Adam

+1

可能最好将此脚本设置为单独的ajax调用并返回结构良好的JSON响应。然后处理JS中的响应。 –

回答

2

您可以在脚本标记内设置document.location。 喜欢的东西

<script> document.location = 'login.php'; </script> 

除了回答直接的问题,我觉得你需要超时,或更复杂的东西来处理一起念警报的时间。

+0

'window.location'也适用 – apokryfos

1

这样做是不可能的,PHP将重定向并永远不会让浏览器执行JS。

您可以在URL中加一个变量,然后使您的login.php测试则显示警报

..... 
    else { 
     header ("location: login.php?mode=login_failed"); 
    } 

    //login.php 
    $mode = filter_input(INPUT_GET, 'mode'); 
    if ($mode === 'login_failed') { 
     echo '<script>.......'; 
    } 
相关问题