这是我的php文件的顶部 - 我想要实现的是,如果用户在登录尝试失败后在此页面上结束,则会在javascript中显示一条消息,其中列出了此类失败的登录尝试和然后将它们重定向回上一页。
为什么会发生这种情况以及可以采取哪些措施来解决问题,以便显示消息框?或者在上一页上 - 如果登录尝试失败,如何停止重定向?
由于
<?php
include("Application.php");
include("Member.php");
include("ContactDetails.php");
include("LoginDetails.php");
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
$value = null;
if(isset($_SESSION['url'])) {
$value = $_SESSION['url'];
$_SESSION['url'] = $_SERVER['REQUEST_URI'];
}
if(isset($_POST['submit'])){
$username=$_POST["username"];
$password=$_POST["password"];
$loginDetails = logUserIn($username, $password);
if($loginDetails != null && $loginDetails->getUserid() > 0){
$contactDetails = getContactDetails($loginDetails->getUserid());
$member = new Member($contactDetails, $loginDetails);
//an array of applications belong to a paticular user
$applications = getApplicationsForMember($member);
printUserApplicationSelectionForm($applications);
}else{
//login attempt failed - tell the user and redirect
if($value != null){
$path = "http://localhost" . "$value";
header("Location: $path");
echo '<script type="text/javascript">alert("Login Attempt Failed!");</script>';
}
}
}
答案 0 :(得分:0)
您在回显之前更改位置,因此警报脚本永远不会回显:
header("Location: $path");
echo '<script type="text/javascript">alert("Login Attempt Failed!");
切换它们,它应该工作。
答案 1 :(得分:0)
如果您发送位置标题,浏览器将不再从当前页面加载响应(您的脚本),而是直接更改为新位置。
您可以做的是在发送Location标头之前向路径添加&message=failedlogin
之类的内容,然后在上一页中显示消息。您还可以将其存储在会话中:
$_SESSION['loginsuccess']=false;
然后在之前的PHP页面中检查此值。