【发布时间】:2011-11-15 00:08:08
【问题描述】:
如果能就此事提供任何帮助,我将不胜感激。
我正在创建一个注册表单,其中一个字段用于用户域,我将验证它对 FILTER_VALIDATE_URL 有效,并且它与 dns_check_record 存在。
但是我遇到的一个问题是,使用这两种方法还会允许将子域提交到我不想要的表单。
有谁知道允许域但不允许子域的方法?
我测试了以下函数,来自http://syntax.cwarn23.net/PHP/Strip_URL_to_Domain:
function domain($domainb)
{
$bits = explode('/', $domainb);
if ($bits[0]=='http:' || $bits[0]=='https:')
{
$domainb= $bits[2];
} else {
$domainb= $bits[0];
}
unset($bits);
$bits = explode('.', $domainb);
$idz=count($bits);
$idz-=3;
if (strlen($bits[($idz+2)])==2) {
$url=$bits[$idz].'.'.$bits[($idz+1)].'.'.$bits[($idz+2)];
} else if (strlen($bits[($idz+2)])==0) {
$url=$bits[($idz)].'.'.$bits[($idz+1)];
} else {
$url=$bits[($idz+1)].'.'.$bits[($idz+2)];
}
return $url;
但这并不完美,因为任何域(例如 www.domain.uk.com)都会显示为 uk.com(我不知道常见的域扩展名)。
有没有人知道比上述函数更好的方法?
【问题讨论】:
-
您必须明确检查
.co.uk、.com.br等内容。 -
您对子域这个词的使用非常松散。你想拒绝像
john@customers.example.com这样的地址吗? -
对不起,是的,我的意思是也想阻止类似的东西。
标签: php validation dns