所以我之前成功地使用了以下两种域检查方法来执行某些操作,但它始终用于特定页面(以.php或其他结尾)。现在我想在我的主页上进行相同的检查,它总是显示为domain.com,没有以下/index.php或任何东西,但我无法使这些方法中的任何一种工作。我一直在开发服务器上测试它,因此dev.domain.com
原因是我有一个脚本,我只想在我的主页上运行,而CMS和脚本就是这样,最简单的方法是在模板中构建一些内容,这样它只会在家中触发页。
这是我无法开始工作的php和js方法:
<?php
$host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if($host == 'dev.domain.com') {
include("/js/cover.js");
}
else
{
include("/js/nocover.js");
}
?>
<script>
if (location.href.indexOf("dev.domain.com") !== -1)
{
jQuery(document).ready(function() {
jQuery('#cover').delay(500).fadeOut(500);
});
}
</script>
编辑1:所以看起来应该是这样的?
<?php
if (basename($_SERVER['PHP_SELF']) == 'dev.domain.com')
{
if($_SERVER['HTTP_HOST'] == 'dev.domain.com')
{
include("js/cover.js");
}
else
{
include("js/unclick.js");
}
}
?>
答案 0 :(得分:3)
您要查找的值位于$_SERVER['HTTP_HOST']
:
if($_SERVER['HTTP_HOST'] == 'dev.domain.com') {
我认为最好将它包装在strtolower()
中,但我认为大多数客户端无论用户输入如何都将其发送为小写。
$_SERVER['SERVER_NAME']
将包含Web服务器配置中定义的服务器名称值。这可能与用于访问页面的主机名不匹配,我认为这是您真正想要的。 $_SERVER['REQUEST_URI']
包含相对于文档根目录所请求的文件的路径。您没有与请求的页面进行比较,只是针对主机名,因此您不需要这样做。
修改强>
仔细观察后,看起来你正在讨论的问题实际上是你传递给include
的路径。请注意,include
使用本地文件系统路径,不使用与浏览器相同的路径结构。您可能需要做的就是从路径中删除前导/
,例如:
include("js/cover.js");
// ^^ remove the slash from here
因为您正在尝试将文件系统根目录中的文件包含在名为/js
的目录中 - 我非常怀疑它实际存在。你可以使用相对路径来解决这种情况,所以只需删除斜杠即可。