2013-05-02 30 views
0

我正在使用PHP中的會話。用戶輸入他的名字和密碼,然後將其發佈到php頁面,該頁面在數據庫表中存在證書時允許用戶查看某些頁面(如果有效),或者如果無效則返回登錄,從而開始會話。 所有與數據庫和會話工作,除非用戶沒有登錄它應該回顯「你沒有登錄」。並返回到登錄頁面。它返回到登錄頁面很好,但我沒有看到任何地方的消息。任何人都可以告訴我,如果代碼的順序不正確,或者另一種顯示錯誤而沒有頁面只顯示錯誤的方法?使用會話控制返回回顯

<?php 
session_start(); 

echo '<h1>Employees Only</h1>'; 

if (isset($_SESSION['valid_user'])) 
{ 
    if ($_SESSION['valid_user']) 
    { 
     echo "<p>You are currently logged in as " . $_SESSION['valid_user'] . "</p>"; 

     $form = "<form action=\"logout.php\" method=\"post\">"; 
     $form .= "<input type=\"submit\" name=\"logout\" value=\"Log Out\">"; 
     $form .= "</form>"; 
     echo $form; 
    } 
    else 
    { 
     echo "<p>You are not logged in.</p>"; 
     header("Location:login1.html"); 
     exit(); 
    } 
} 
else 
{ 
    echo "<p>You are not logged in.</p>"; 
    header("Location:login1.html"); 
    exit(); 
} 
    ?> 

回聲「您沒有登錄」。將不會顯示,但它會返回到login1.html

+2

您如何期待它既顯示消息又重定向? – 2013-05-02 05:43:06

+0

$ _SESSION ['valid_user']包含什麼? – 2013-05-02 05:43:36

+0

@chandresh_cool這不重要。問題是重定向頁面 – asprin 2013-05-02 05:44:25

回答

0

使用此操作,它將等待5秒鐘,之後它將重定向到login1.html

header('refresh: 5; url=login1.html'); 
echo '<h1>You will be re-directed in 5 seconds...</h1>'; 
+1

與Pankucins相同,作品完美謝謝。 – user2168066 2013-05-02 05:52:05

0

我估計是因爲您使用的是header('location:login1.html')。它立即重定向客戶端。
嘗試使用header('Refresh:2; url=login1.html');。它會等待x(在這種情況下爲2),然後重定向。你可以閱讀更多關於它here

+0

這工作完美,謝謝 – user2168066 2013-05-02 05:51:20

0

您無法重定向用戶,同時希望他有時間看到您發送的消息。您需要退後一步,劃分進程,將其保存到一個變量中,並在下一頁顯示給用戶。

實現這個目標的方法有很多,儘管大多數web框架最流行的做法是製作一個「flash消息」,只有在會話中才會存在,直到下一頁重新加載,因此只會向用戶顯示一次。

article告訴你如何做到這一點。如果你想使用現有的東西,還有更多的谷歌。