这是我的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>';
}
}
}
在回显之前更改位置,因此警报脚本永远不会回显:
header("Location: $path");
echo '<script type="text/javascript">alert("Login Attempt Failed!");
把它们调换一下就可以了。
如果您发送位置标头,浏览器将不再从当前页面加载响应(您的脚本),而是直接更改到新的位置。您可以做的是在发送Location标头之前将&message=failedlogin
之类的东西添加到路径中,然后在上一页中显示消息。您也可以将它存储在会话:
$_SESSION['loginsuccess']=false;
中,然后在前一个PHP页面中检查该值。