我在这里遇到了严重的问题。我创建了一个包含会话的用户系统。 问题是您登录时只会看到内容。例如,在导航栏中,登录按钮将替换为帐户按钮。
现在我的问题: 每个页面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;
?>
答案 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了解有关如何处理标头和输出缓冲的更多详细信息。