PHP包含页面内容不刷新

时间:2013-06-27 14:09:02

标签: php html http-headers location refresh

我在这里遇到了严重的问题。我创建了一个包含会话的用户系统。 问题是您登录时只会看到内容。例如,在导航栏中,登录按钮将替换为帐户按钮。

现在我的问题: 每个页面php-包括navbar.php。 例如在index.php中写道:

<body>
<?php include("navbar.php")?>
</body>

login.php重定向到index.php:

header("Location: index.php");

但是index.php没有刷新。用“F5”进行硬刷后,每件事情都很好。

我还尝试使用元标记来阻止在缓存中加载页面。

任何想法?

的index.php:

<html lang="en">
<head>
    ...
</head>
<body >
<?php include("navbar.php")?>
    <div id="wrap">
    ...
    </div>
</body> 
</html>

navbar.php

<div class="navbar">
    <?php
    session_start();
    if (!isset($_SESSION['logged']) || !$_SESSION['logged']) 
    {?>
      ...Sign in etc...
    <?php
    }
    else
    {?>
        ...Accounting...
    <?php
    }?>
</div>

的login.php:

<html>
<head>
</head>
<body>
<?php include("navbar.php"); ?>
<div class="container">
  <form class="form-signin" action="logon.php" method="post" >
        ...
    <button type="submit">Login</button>
  </form>
</div>
</body>
</html>

logon.php:

<?php
if login successfull //pseudo code
    header("Location: http://www.***.com/index.php");
}
else 
{
    header("Location: http://www.google.de");
}
exit;
?>

2 个答案:

答案 0 :(得分:2)

将此添加到.htaccess文件中。这将禁用这些文件扩展名上的浏览器缓存

 <FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$">
 Header unset Cache-Control
 </FilesMatch>

答案 1 :(得分:0)

根据the specs,你必须通过一个绝对的uri 在重定向时,最好添加它:

header('HTTP/1.1 301 Moved Permanently');
header('Location: https://www.google.com');

对于SEO purpouses和浏览器缓存(google以了解更多信息) 我希望你已经知道了,但是你还必须确保没有输出到客户端,因为在这种情况下,标题已经被发送,并且逻辑要求它已经太晚了然后改变它们。

Check this question了解有关如何处理标头和输出缓冲的更多详细信息。