在PHP中,如何检查当前页面中是否包含www?
例如,如果用户在http://www.example.com/something,我如何才能在网址中找到www,而在http://example.com/something上,www不在网址中?
答案 0 :(得分:11)
您可以使用$_SERVER['HTTP_HOST']
来获取您的域名。现在,如果您的网站不使用简单的子域名。只需使用这样的东西:
$url1 = "www.domain.com";
$params = explode('.', $url1);
if(sizeof($params === 3) AND $params[0] == 'www') {
// www exists
}
请注意,如果您的params数组有2个项目,那么域名看起来像domain.com
,并且没有www
清楚。您甚至可以检查$params
数组的大小,并根据其大小决定是否www
。
现在,如果您的网站使用子域,那么它会变得更复杂。你可以将这些作为可能的场景:
$url1 = "www.domain.com";
$url2 = "www.sub.domain.com";
$url3 = "domain.com";
$url4 = "sub.domain.com";
然后你会再次爆炸每个网址,并比较大小并检查第一项是否为“www”。
但请注意,您的子域可以命名为www
,其中www
将是子域:D
然后它看起来像这样:www.domain.com
,再次,www
是子域:)这太疯狂了我几乎疯了这个:)
无论如何,当网站没有使用子域名时检查www
,这是和平的蛋糕。
但要检查网址是否为www
且您的网站是否使用子网域,这可能很难。
解决该问题的最简单的解决方案是禁用www
子域,如果可以的话。
如果您需要更多帮助但这不能回答您的问题,请随时提出。
我有类似的情况,用户可以创建自己的子域名帐户,如www.user.domain.com
,我必须做同样的事情。
希望这有帮助!
答案 1 :(得分:7)
你可以做preg_match
这将是:
if(preg_match('/www/', $_SERVER['HTTP_HOST']))
{
echo 'you got www in your adress';
}
else
{
echo 'you don not have www';
}
你甚至可以用.htaccess来做,这取决于你正在构建上面的选项会对simpel检测做得很好。
如果你选择了Ferdia提供的选项,请按以下方式进行检查:
$domain = array_shift(explode(".",$_SERVER['HTTP_HOST']));
if(in_array('www', $domain))
{
echo 'JUP!';
}
答案 2 :(得分:3)
<?php
$parsed = parse_url("http://www.example.com/something");
$hasWww = strpos($parsed['host'], "www.") === 0;
var_dump($hasWww);
否则,请
strpos($_SERVER['HTTP_HOST'], "www.") === 0
答案 3 :(得分:1)
array_shift(explode(".",$_SERVER['HTTP_HOST']));
应该工作,然后检查数组是否存在www。如果您只是想删除或强制使用www,那么.htaccess规则远远优于PHP。
答案 4 :(得分:1)
$_SERVER['HTTP_HOST']
主机的内容:来自当前请求的标头(如果有) 之一。
$_SERVER['SERVER_NAME']
当前脚本所在的服务器主机的名称 执行。如果脚本在虚拟主机上运行,则会执行此操作 为该虚拟主机定义的值。
答案 5 :(得分:1)
有很多方法可以检查www是否包含。
其中一种方式是:
if(strpos($_SERVER['HTTP_HOST'], `www`) !== false) {
echo "WWW found";
} else {
echo "WWW not found";
}