1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
13
13
ZUGRIFFE
448
448
EMPFEHLEN
-
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 gibtNein, ich bin kein Programmier-könig. Aber Spaß macht es trotzdem!
-
Habe folgendes auf php.net gefunden:
Das werde ich so verwenden, dankePHP-Code:<?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";
?>
-
Probier mal Folgendes:
PHP-Code: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';
}
}
Markus Wulftange
-
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 :1 2
RewriteEngine on RewriteRule ^info:(.*)$ info.php?url=$1
-
Wie bitte?
Markus Wulftange
-
Ich gebe in einer URL http://google.de ein, und am script kommt http:/google.de an.
Und noch was anderes, dein Script filtert IP-Adressen mit raus oder?
-
Hallo,
man kann doch eigentlich auch via filter_var() prüfen oder?
Grüße,
kase
-
Das sollte auch möglich sein.
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.PHP-Code:filter_var($_GET['hostname'], FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)
Markus Wulftange
-
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
-
Von einer IP-Adresse war bisher auch nie die Rede.
Markus Wulftange
-
stimmt, aber trotzdem
-
Code :
1
/^(?:(?:(?:[a-z0-9]|[a-z0-9][a-z0-9-]*[a-z0-9])\.)*(?:[a-z]|[a-z][a-z0-9-]*[a-z0-9])|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)$/
Markus Wulftange
-
PHP-Code:
$host = $_GET['host'];
if( isset($host) ) {
$host = strtolower($host);
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])|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)$/', $host) ) {
die ('invalid format');
}
}
if (!empty($host)) {
echo '<b>Ping to address '.htmlspecialchars($host).'</b>...<br /><br />';
$cmd = 'ping -c 4 ' . escapeshellcmd($host);
$return = array();
exec($cmd, $return);
echo implode('<br/>', $return);
}
So ist das gut und sicher oder?
Ähnliche Themen
-
Formularfelder auf Eingabe überprüfen
Von Schniko im Forum PHPAntworten: 27Letzter Beitrag: 07.07.10, 15:24 -
GET-Eingabe überprüfen
Von Dörti.Hermi im Forum PHPAntworten: 4Letzter Beitrag: 08.02.08, 17:56 -
Formular Eingabe überprüfen
Von hubbl im Forum PHPAntworten: 1Letzter Beitrag: 04.11.07, 23:18 -
Eingabe vor dem Versenden überprüfen
Von Thomas_Jung im Forum PHPAntworten: 17Letzter Beitrag: 01.02.07, 07:20 -
Eingabe Datum überprüfen
Von Howie im Forum PHPAntworten: 5Letzter Beitrag: 02.12.03, 08:17





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren