PHP包含页面内容不刷新
Posted
技术标签:
【中文标题】PHP包含页面内容不刷新【英文标题】:PHP Include page content does not refresh 【发布时间】: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
之前发送。通过输出缓冲解决该问题,或确保在生成任何输出之前设置标头。
【参考方案1】:
将此添加到您的 .htaccess 文件中。这将禁用这些文件扩展名上的浏览器缓存
<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>
【讨论】:
【参考方案2】:根据the specs,你必须传递一个绝对uri。 重定向时最好也加上这个:
header('HTTP/1.1 301 Moved Permanently');
header('Location: https://www.google.com');
用于 SEO 目的和浏览器缓存(谷歌此以了解更多信息)。 我希望您已经知道这一点,但您还必须确保没有向客户端发送任何输出,因为在这种情况下,标头已经发送,并且逻辑表明现在更改它们为时已晚。
Check this question 了解有关如何处理标头和输出缓冲的更多详细信息。
【讨论】:
将 login.php 更改为:header("Location: www.***.com/index.php");仍然没有刷新 index.php,按 F5 后一切正常,登录按钮被替换为帐户 @Swagger: 结果是……?另外:您发布的 sn-p 我得到的印象是您已经发送了标头(通过发送输出隐式发送)。我添加了一个旧问题的链接,该问题解释了如何缓冲输出或如何确保在需要时可以设置标题以上是关于PHP包含页面内容不刷新的主要内容,如果未能解决你的问题,请参考以下文章
如何在不刷新整个页面的情况下更新 HTML 文档中的 php 变量?