我有3个文件:header.php,footer.php和index.php。
header.php和footer.php文件集成在index.html文件中。它运作良好。但我有一个问题。我必须做什么,这样用户将无法单独看到header.php和footer.php文件。我想只在index.php文件中看到。
当我在网址栏中写道:mydomain.com/header.php我不想看到它。
我该怎么办?
答案 0 :(得分:1)
我看到两个选项
您应该使用.htaccess文件。有了它,您可以通过用户,身份验证,IP地址限制对某些文件的访问,或者只限制访问permanantley。像
一样使用它AuthUserFile /home/header.php
AuthGroupFile /dev/null
AuthName "My Protected Directory"
AuthType Basic
<Limit GET POST PUT>usershere</Limit>
上面的链接和searching around the internet提供了更多信息,这是一个相当常见的问题。
将所有常用的php放入一个名为common.php的文件中。在其他文件的开头使用require("common.php");
,然后让common.php成为一堆函数。
的common.php
<?php
function header() {
<!DOCTYPE html>
<html>
<head></head>
<body>
}
function footer() {
</body>
</html>
}
?>
mypage.php
<?php
require("common.php");
header();
//my code here for this page
footer();
?>
common.php没有任何输出,所以人们可以调用它,什么都不会发生,或者你可以让common.php重定向到你的主页,如
<?php
header("Location: index.php");
die();
//functions
从上面的答案中分离出评论和意见,我喜欢这两个选项,因为你不需要额外的模块或插件,它们很简单,你可以决定哪个最适合你的用例。如果您想在用户尝试查看common.php时重定向到另一个页面,我会建议第二个选项和我个人的最爱。第一个选项会抛出一个服务器错误,说访问被拒绝,如果你真的想要,你可以拥有,但不会将任何人重定向到任何地方。在编码时,我倾向于使用第二种选择。
最后,两种选择都很棒,这取决于你。
答案 1 :(得分:0)
你可以像Joomla那样做!
Joomla在其index.php中定义了一个变量。 Joomla使用“JEXEC”。在其他文件中,它只是检查变量是否已定义或未定义。这意味着当您在包含header.php之前在索引中定义此变量时,它将显示其上下文,否则您可以显示(如Joomla!)“restricted Access”或只返回404-Header并加载您的404-Document。 / p>
另一种选择是在文件名前使用“#”。没有浏览器可以直接打开该文件,因为它将其作为锚点处理。所以只需将其重命名为#header.php并将其包含在内,并且浏览器无法打开该文件。不确定卷曲等事情。
答案 2 :(得分:0)
有许多解决方案,其中一些已经提到。我是怎么做的,是我在我的文件中定义一个变量,并将其设置为true。然后,您可以使用下面的代码查看是否已设置,如果已设置,则显示页面。这意味着只能通过include来查看它,在包含标题之前设置该变量。
// In your code, you can put this
$allowInclude = true;
include "header.php";
然后在你的标题中
if (isset($allowInclude) && $allowInclude) {
//Header here
} else {
// do something
}
正如我所说,有很多方法,取决于你真正想要的。
(对不起任何和所有糟糕的格式,在移动设备上写这个)