GET eingabe auf URL überprüfen

kase

Erfahrenes Mitglied
Hallo,

ich lasse mir in einem Script per $_Get einen Domainnamen übergeben.

In dieser Variable steht dann im richtigen Fall einfach sowas wie "google.de" drin. Es darf nur name.tld drin stehen, kein http://.. und auch kein Pfad.

Ich denke ich müsste jetzt nachschauen ob Sonderzeichen wie ":" und "/" in der Variable vorhanden sind, ist dies der Fall muss abgebrochen werden.

Wie mache ich das? Ich denke eine Funktion die direkt überprüft ob es eine Domain ist gibt es nicht oder?


Danke,
kase
 
Es gibt viele Scripts, die das prüfen.

Du könntest aber einfach mit Preg_Match prüfen, ob es doppelpunkte, http:// usw in der adresse gibt
 
Habe folgendes auf php.net gefunden:
PHP:
<?php
// den Hostnamen aus URL holen
preg_match('@^(?:http://)?([^/]+)@i',
    "http://www.php.net/index.html", $treffer);
$host = $treffer[1];

// die letzten beiden Segmente aus Hostnamen holen
preg_match('/[^.]+\.[^.]+$/', $host, $treffer);
echo "Der Domänen-Name lautet: {$treffer[0]}\n";
?>

Das werde ich so verwenden, danke :-)
 
Probier mal Folgendes:
PHP:
if( isset($_GET['hostname']) ) {
	$_GET['hostname'] = strtolower($_GET['hostname']);
	if( !preg_match('/^(?:(?:[a-z0-9]|[a-z0-9][a-z0-9-]*[a-z0-9])\.)*(?:[a-z]|[a-z][a-z0-9-]*[a-z0-9])$/', $_GET['hostname']) ) {
		echo 'Ungültiges Format';
	}
	if( gethostbyname($_GET['hostname']) == $_GET['hostname'] ) {
		echo 'Ungültiger Hostname';
	}
}
 
mhh, ich stehe jetzt vor einem anderen Problem.

Das Script läuft normalerweise auf info.php?url=..., mit hilfe von mod_rewrite habe ich es jetzt so gemacht, das ich info:...url... eingebe.

So, das Problem ist jetzt aber das mod_rewrite scheinbar das http://.. in http:/.. umwandelt. Warum auch immer :o

Code:
RewriteEngine on 
RewriteRule ^info:(.*)$ info.php?url=$1
 
Das sollte auch möglich sein.
PHP:
filter_var($_GET['hostname'], FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)
Mit selbst steht diese Funktion leider nicht zur Verfügung, dass du vermutlich mit den Flags noch herumspielen musst um zum selben Ergebnis zu kommen. Ob der angegebene Hostname registriert ist, musst du dann aber immer noch prüfen.
 
Danke,
ich habe leider das Problem das es z.b. für einen ping möglich sein soll eine IP-Adresse als auch eine Domain einzugeben.

Und IP-Adressen scheinen bei deinem Script auch rausgefiltert zu werden.



Grüße,
kase
 
Zurück