如果URL等于此,则执行此操作

时间:2012-03-20 15:11:21

标签: php jquery

所以我之前成功地使用了以下两种域检查方法来执行某些操作,但它始终用于特定页面(以.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"); 
}
}

?> 

1 个答案:

答案 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的目录中 - 我非常怀疑它实际存在。你可以使用相对路径来解决这种情况,所以只需删除斜杠即可。