Hostname
Zend_Validate_Hostname erlaubt die Prüfung von Hostnamen mit einem
Set von bekannten Spezifikationen. Es ist möglich drei verschiedene Typen von Hostnamen zu
Prüfen: einen DNS Hostnamen (z.b. domain.com), IP Adressen (z.B. 1.2.3.4), und lokale
Hostnamen (z.B. localhost). Standarmäßig werden nur DNS Hostnamen geprüft.
Normale Verwendung
Ein normales Beispiel der Verwendung ist anbei:
isValid($hostname)) {
// Hostname scheint gültig zu sein
} else {
// Hostname ist ungülig; Gründe dafür ausdrucken
foreach ($validator->getMessages() as $message) {
echo "$message\n";
}
}
]]>
Das prüft den Hostnamen $hostname und wird einen Fehler über
$validator->getMessages() mit einer nützlichen Fehlermeldung
auswerfen.
Verschiedene Typen von Hostnamen prüfen
Es kann gewünscht sein auch IP Adressen, lokale Hostnamen, oder eine Kombination aller drei
erlaubten Typen zu prüfen. Das kann gemacht werden durch die Übergabe eines Parameters an
Zend_Validate_Hostname wenn dieser initialisiert wird. Der Parameter
sollte ein Integer sein, welcher die Typen von Hostnamen auswählt die erlaubt sind. Hierfür
können die Zend_Validate_Hostname Konstanten verwendet werden.
Die Zend_Validate_Hostname Konstanten sind: ALLOW_DNS um nur DNS
Hostnamen zu erlauben, ALLOW_IP um IP Adressen zu erlauben,
ALLOW_LOCAL um lokale Hostnamen zu erlauben, und
ALLOW_ALL um alle drei Typen zu erlauben. Um nur IP Adressen zu prüfen
kann das folgende Beispiel verwendet werden:
isValid($hostname)) {
// Hostname scheint gültig zu sein
} else {
// Hostname ist ungülig; Gründe dafür ausdrucken
foreach ($validator->getMessages() as $message) {
echo "$message\n";
}
}
]]>
Genau wie die Verwendung von ALLOW_ALL alle Typen von Hostnamen
akzeptiert, können diese Typen kombiniert werden um Kombinationen zu erlauben. Um zum
Beispiel DNS und lokale Hostnamen zu akzeptieren muß das Zend_Validate_Hostname Objekt wie
folgt initialisiert werden:
Internationale Domain Namen prüfen
Einige Länder Code Top Level Domains (ccTLDs), wie 'de' (Deutschland), unterstützen
internationale Zeichen in Domain Namen. Diese sind als Internationale Domain Namen (IDN)
bekannt. Diese Domains können mit Zend_Validate_Hostname geprüft
werden, mit Hilfe von erweiterten Zeichen die im Prüfprozess verwendet werden.
Bis jetzt unterstützen mehr als 50 ccTLDs IDN Domains.
Eine IDN Domain zu prüfen ist genauso einfach wie die Verwendung des standard Hostnamen
Prüfers da IDN Prüfung standardmäßig eingeschaltet ist. Wenn IDN Prüfung ausgeschaltet
werden soll, kann das entweder durch die Übergabe eines Parameters im
Zend_Validate_Hostname Konstruktor, oder über die
$validator->setValidateIdn() Methode gemacht werden.
Die IDN Prüfung kann ausgeschaltet werden durch die Übergabe eines zweiten Parameters an den
Zend_Validate_Hostname Konstruktor auf die folgende Art und Weise.
Zend_Validate_Hostname::ALLOW_DNS,
'idn' => false
)
);
]]>
Alternativ kann entweder TRUE oder FALSE an $validator->setValidateIdn()
übergeben werden, um die IDN Prüfung ein- oder auszuschalten.
Wenn ein IDN Hostname geprüft wird, der aktuell nicht unterstützt wird, ist es sicher das
die Prüfung fehlschlagen wird wenn er irgendwelche internationalen Zeichen hat. Wo keine
ccTLD Datei in Zend/Validate/Hostname existiert, welche die zusätzlichen Zeichen definiert,
wird eine normale Hostnamen Prüfung durchgeführt.
Es sollte beachtet werden das IDNs nur geprüft werden wenn es erlaubt ist DNS Hostnamen zu
prüfen.
Top Leven Domains prüfen
Normalerweise wird ein Hostname gegen eine Liste von bekannten TLDs geprüft. Wenn diese
Funktionalität nicht benötigt wird kann das, auf die gleiche Art und Weise wie die IDN
Unterstützung, ausgeschaltet werden Die TLD Prüfung kann ausgeschaltet werden indem ein
dritter Parameter an den Zend_Validate_Hostname Konstruktor übergeben wird. Im folgenden
Beispiel wird die IDN Prüfung durch den zweiten Parameter unterstützt.
Zend_Validate_Hostname::ALLOW_DNS,
'idn' => true,
'tld' => false
)
);
]]>
Alternativ kann entweder TRUE oder FALSE übergeben an
$validator->setValidateTld() übergeben werden um die TLD Prüfung ein- oder
auszuschalten.
Es sollte beachtet werden das TLDs nur geprüft werden wenn es erlaubt ist DNS Hostnamen zu
prüfen.