【发布时间】:2013-06-25 02:12:00
【问题描述】:
我这里有一个严重的问题。我创建了一个带有会话的用户系统。 问题是您只有在登录时才能看到内容。例如,在导航栏中,登录按钮被替换为帐户按钮。
现在我的问题: 每个 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>
登录.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;
?>
【问题讨论】:
-
你的 php 文件的缓存限制是多少?谈论.htaccess
-
由于是动态文件,一般做法是不强制缓存
-
你在哪里包含 login.php 文件?在致电
header之前,您echo-ing 有什么事情吗?在设置标题之前文件中是否有 HTML?如果是这样:将header移到顶部,或使用ob_start() -
缓存限制设置为 nocache...
-
@Swagger:您的所有文件都以
<html>标记开头,因此标题会在您调用header之前发送。通过输出缓冲解决该问题,或确保在生成任何输出之前设置标头。
标签: php html http-headers location refresh