2013-05-02 101 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告诉你如何做到这一点。如果你想使用现有的东西,还有更多的谷歌。