2014-06-15 254 views
0

這是我的PHP文件的頂部 - 我試圖實現的是,如果用戶在此處發佈失敗的登錄嘗試後結束了此頁面 - 則應在javascript中顯示消息失敗的登錄嘗試,然後將其重定向回到上一頁。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

發生這種情況是因爲您重定向並顯示消息。使用js重定向,不需要'header'。 '' – CnapoB

+0

您的第一段解釋了您想要達到的目標,然後您的下一段會問「爲什麼會發生這種情況?」_爲什麼會發生?你似乎沒有提到這個問題。請更清楚發生的事情。 – Sparky

+0

你也可以使用js'confirm'通過點擊按鈕重定向。 – CnapoB

回答

0

您呼應之前改變位置,因此警報腳本從不附和道:

 header("Location: $path"); 
     echo '<script type="text/javascript">alert("Login Attempt Failed!"); 

開關周圍的人,它應該工作。

0

如果您發送位置標題,則瀏覽器不會從當前頁面加載響應(您的腳本),而是直接更改爲新位置。 您可以做的是在發送位置標題之前在路徑中添加諸如&message=failedlogin之類的內容,然後在上一頁中顯示消息。您也可以將它存儲在會話中:
$_SESSION['loginsuccess']=false;然後在前一個PHP頁面中檢查此值。