2011-09-29 103 views
0

所以這是兩個問題...在繼續使用PHP之前,如何等待一段時間?

首先,當用戶註銷時,我想將它們重定向回登錄頁面。我通過使用header('login_form.php');來做到這一點,然而,在這樣做之前,我嘗試打印出「您已成功註銷,現在您正被重定向到登錄表單。」。我使用echo來回顯文本,但是,頭文件運行得非常快,幾乎立即轉回到登錄表單,而沒有機會讀取消息。那麼,如何才能稍微延遲一點,並在用戶重定向標題之前讓消息顯示5秒鐘左右?

我的第二個問題是,簡單地在登錄表單上顯示「不正確的登錄名」的最佳方式是什麼?因此,當我瀏覽登錄表單並輸入不正確的用戶名/密碼時,不是轉到「login.php」然後重定向回login_form.php,它只是確定登錄是否成功,如果不是隻需在輸入字段上方顯示「不正確的登錄名」,而不必將其重定向回login_form(它也不會通知用戶登錄名不正確)。

+3

爲什麼你需要登錄閃屏?如果登錄成功,只需將用戶直接重定向到他們想要去的地方 – NullUserException

+0

將來,請在單獨的問題中詢問每個個人問題。 – BalusC

+0

@NullUserExceptionఠ_ఠ:在某些情況下,我認爲它可能會有用。如果你只是說「你沒有登錄」,那麼它是相當無用的,但如果它包含一個不錯的歡迎消息,如「歡迎回來,用戶!我們很高興再次見到你。」那就完全沒問題。這是網站的偏好,類似於它的存儲偏好,當你走進來時是否有門口迎賓。 – animuson

回答

6

返回一個帶有元刷新標籤的簡單HTML頁面,指向<head>中的所需位置。

<meta http-equiv="refresh" content="5;url=login_form.php"> 

這將在5秒後刷新(重定向)頁面到給定的URL。我也會考慮添加一個直接的<a>鏈接的不耐煩。

<p> 
    You are logged out. You will be redirected to the login page in 5 seconds. 
    Click <a href="login_form.php">here</a> if you're impatient. 
</p> 

我個人覺得5秒太長。讓它3.


關於你的第二個問題,只是讓表單提交自我,並重新與動態聯的錯誤消息非常相同的表單的輸入域旁邊。只有登錄成功時纔會重定向。

0
  1. 在php中單獨執行此操作將會很困難,或者根據具體情況甚至不可能實現。相反,帶他們到logout.php,或任何頁面顯示「您已被註銷」,並只需要添加一個metarefresh標題,如: <meta http-equiv="refresh" content="5; url=login_form.php"> 這將在5秒內他們重定向到login_form。這是一種流行的技術,但我不能保證它在任何情況下都能正常工作。但是,如其他答案所示,您可以包含一個直接重定向的鏈接。

  2. 這可以通過javascript完成(您可以使用ajax執行驗證並顯示相應的錯誤消息/讓他們根據需要登錄)。如果javascript不是選項,或者您還需要處理沒有它的用​​戶,則當login.php拒絕認證時,請設置一個_SESSION參數,如_SESSION[login_fail_message] = true。在login_form.php上,檢查這個值是否爲真。如果是,則顯示「不正確的登錄」消息。在登錄嘗試時清除此值(或者理想情況下,如果他們離開頁面)。

0

對於第一部分,要知道更改位置標題會立即生效。有些網站允許登錄表單顯示用戶已成功註銷的消息。

對於第二部分,讓JavaScript首先進行驗證並顯示客戶端的任何錯誤。如果它傳遞了javascript,請讓服務器通過POST進行服務器端驗證,然後再次返回登錄表單,但這次標記了錯誤區域。登錄成功應該像平常那樣重定向它們。

相關問題