tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Kalma
ERLEDIGT
NEIN
ANTWORTEN
13
ZUGRIFFE
448
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von kase
    kase kase ist offline Mitglied Gold
    Registriert seit
    May 2005
    Beiträge
    101
    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
     

  2. #2
    Registriert seit
    Oct 2005
    Ort
    Nottuln
    Beiträge
    1.282
    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
    kase bedankt sich. 
    Nein, ich bin kein Programmier-könig. Aber Spaß macht es trotzdem!

  3. #3
    Avatar von kase
    kase kase ist offline Mitglied Gold
    Registriert seit
    May 2005
    Beiträge
    101
    Habe folgendes auf php.net gefunden:
    PHP-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";
    ?>
    Das werde ich so verwenden, danke
     

  4. #4
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    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

  5. #5
    Avatar von kase
    kase kase ist offline Mitglied Gold
    Registriert seit
    May 2005
    Beiträge
    101
    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
     

  6. #6
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Wie bitte?
     
    Markus Wulftange

  7. #7
    Avatar von kase
    kase kase ist offline Mitglied Gold
    Registriert seit
    May 2005
    Beiträge
    101
    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?
     

  8. #8
    Avatar von kase
    kase kase ist offline Mitglied Gold
    Registriert seit
    May 2005
    Beiträge
    101
    Hallo,

    man kann doch eigentlich auch via filter_var() prüfen oder?

    Grüße,
    kase
     

  9. #9
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Das sollte auch möglich sein.
    PHP-Code:
    filter_var($_GET['hostname'], FILTER_VALIDATE_URLFILTER_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.
     
    Markus Wulftange

  10. #10
    Avatar von kase
    kase kase ist offline Mitglied Gold
    Registriert seit
    May 2005
    Beiträge
    101
    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
     

  11. #11
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Von einer IP-Adresse war bisher auch nie die Rede.
     
    Markus Wulftange

  12. #12
    Avatar von kase
    kase kase ist offline Mitglied Gold
    Registriert seit
    May 2005
    Beiträge
    101
    stimmt, aber trotzdem
     

  13. #13
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    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

  14. #14
    Avatar von kase
    kase kase ist offline Mitglied Gold
    Registriert seit
    May 2005
    Beiträge
    101
    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

  1. Formularfelder auf Eingabe überprüfen
    Von Schniko im Forum PHP
    Antworten: 27
    Letzter Beitrag: 07.07.10, 15:24
  2. GET-Eingabe überprüfen
    Von Dörti.Hermi im Forum PHP
    Antworten: 4
    Letzter Beitrag: 08.02.08, 17:56
  3. Formular Eingabe überprüfen
    Von hubbl im Forum PHP
    Antworten: 1
    Letzter Beitrag: 04.11.07, 23:18
  4. Eingabe vor dem Versenden überprüfen
    Von Thomas_Jung im Forum PHP
    Antworten: 17
    Letzter Beitrag: 01.02.07, 07:20
  5. Eingabe Datum überprüfen
    Von Howie im Forum PHP
    Antworten: 5
    Letzter Beitrag: 02.12.03, 08:17