|
@@ -1,15 +1,18 @@
|
|
<?php
|
|
<?php
|
|
-function validhostname($inp,$pattmods='') {
|
|
|
|
- if (strlen($inp)>253)
|
|
|
|
- return(false);
|
|
|
|
- $inp=explode('.',$inp);
|
|
|
|
- foreach ($inp as $lab) {
|
|
|
|
|
|
+function validhostname($hostname,$pattmods='') {
|
|
|
|
+ preg_replace('/./u','.',$hostname,-1,$c);
|
|
|
|
+ (strlen($hostname)>$c) ? $multibyte=true : $multibyte=false;
|
|
|
|
+ if ($multibyte) $hostname=idn_to_ascii($hostname,IDNA_DEFAULT,INTL_IDNA_VARIANT_UTS46);
|
|
|
|
+ if (strlen($hostname)>253)
|
|
|
|
+ return false;
|
|
|
|
+ $labs=explode('.',$hostname);
|
|
|
|
+ foreach ($labs as $lab) {
|
|
$len=strlen($lab);
|
|
$len=strlen($lab);
|
|
if ($len==0 || $len>63)
|
|
if ($len==0 || $len>63)
|
|
- return(false);
|
|
|
|
|
|
+ return false;
|
|
if (preg_match('#^[a-z0-9]([a-z0-9-]*[a-z0-9])?$#i'.$pattmods,$lab)!==1)
|
|
if (preg_match('#^[a-z0-9]([a-z0-9-]*[a-z0-9])?$#i'.$pattmods,$lab)!==1)
|
|
- return(false);
|
|
|
|
|
|
+ return false;
|
|
}
|
|
}
|
|
- return(true);
|
|
|
|
|
|
+ return true;
|
|
}
|
|
}
|
|
?>
|
|
?>
|