Ankündigung

Einklappen
Keine Ankündigung bisher.

Im Formular mit BlacklistPath Domain überprüfen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Im Formular mit BlacklistPath Domain überprüfen

    Moin zusammen,

    ich möchte in einem Kommentarformular das Input der Zeile "Webseite" mittels einer selbsterstellten Blacklist (txt-Datei) überprüfen und dort eingetragene Domains sperren. D.h., die eingegebene Webseite wird nicht akzeptiert.

    Dafür habe ich auch schon einem Codechnipsel gefunden

    PHP-Code:
    <?php
    function checkAddress($Address$BlacklistPath ""){
      if(!
    preg_match("/^[A-Z0-9._%+-ÄÖÜäöü]+@[A-Z0-9.-ÄÖÜäöü]+\.[A-Z]{2,6}$/i"$Address))
        return 
    false;
      
      list(
    $LocalPart$DomainPart) = explode("@"$Address);
      
      if(
    $BlacklistPath){
        if(!
    is_file($BlacklistPath))
          return 
    false;
        
        if((
    $BlacklistedDomains file($BlacklistPath)) === false)
          return 
    false;
        
        foreach(
    $BlacklistedDomains as $BlacklistedDomain){
          if(
    trim($BlacklistedDomain) == $DomainPart)
            return 
    false;
        }
      }
      
      if((
    $Connection = @fsockopen($DomainPart80$ErrorNumber$ErrorString5)) === false)
        return 
    false;
      
    fclose($Connection);
      
      return 
    true;
    }
    ?>
    der dies bewerkstelligt. Mit diesem Schnipsel wird allerdings das Feld "E-Mail" überprüft.

    Als Anfänger habe ich nun das Problem, was muss ich an diesem Code verändern, dass nicht E-Mail sondern Webseite überprüft wird. Mich irritiert vor allem die Zeile mit

    PHP-Code:
     list($LocalPart$DomainPart) = explode("@"$Address); 
    da webadressen über kein "@" verfügen. Einfach weglassen funktioniert nicht. Und ehe ich mir alles zerschieße frage ich mal lieber. Die Forumssuche habe ich genutzt, bin aber dahingehend leider nicht fündig geworden.

    Vielleicht findet sich jemand, der mir etwas helfen kann oder diesen Code gar selbst nutzt bzw. kennt. Vielen Dank schon mal...

  • #2
    Hallo,
    du müsstest statt der Emailadresse die Website übergeben und deren Domain in $DomainPart ablegen.
    Ich rate dir folgendes:
    PHP-Code:
    <?php
    function isDomainAllowed($website) {
      
    $blacklist file("domains.txt"); // read files line by line
      
    $blacklist array_map("rtrim"$blacklist); // remove trailing new lines
      
    $hostname parse_url($websitePHP_URL_HOST); // get hostname by website
      
    return !in_array($hostname$blacklist); // check occurence
    }
    //
    if (!isDomainAllowed($_POST["website"])) {
      
    // not allowed
    }
    ?>
    Die domains.txt muss die Domains so enthalten, wie sie auch eingegeben werden können:
    www.php.de
    php.de
    ..

    Kommentar


    • #3
      Hi Chriz,

      vielen dank schon mal für das Aufgreifen des Themas. Einige Fragen mögen vielleicht blöd klingen, aber als Anfänger darf man das denk ich schon mal.... blöd fragen.

      Gehe ich recht in der Annahme, dass dieses Script nun eine eigene php-Datei gibt... Name "sowieso.php" ?

      Wenn ich jetzt noch wüsste, wie ich das Script mit dem Formular verbinden kann wäre mir verdammt weit geholfen. Das Formular sieht aus wie folgt:

      PHP-Code:
      <div class="input">Name <?php if ($req_e('(<b>*</b>)'); ?></div>
      <input type="text" name="author" id="author" value="<?php echo $comment_author?>" size="40" tabindex="1" />
      <div class="input">E-Mail <?php if ($req_e('(<b>*</b>)'); ?></div>
      <input type="text" name="email" id="email" value="<?php echo $comment_author_email?>" size="40" tabindex="2" />
      <div class="input">Webseite</div>
      <input type="text" name="url" id="url" value="<?php echo $comment_author_url?>" size="40" tabindex="3" />
      Hast Du dazu vielleicht auch noch ne Idee?

      Das mit der domain.txt ist soweit klar...

      Kommentar


      • #4
        Nichts für ungut, aber wenn du das nicht weißt bist du nicht wirklich dabei PHP zu lernen oder?

        Kommentar


        • #5
          Ne will ich nicht lernen. Ich stellte die Frage nur, weil ich bereits mehr als alles über PHP weiß und die Lottozahlen von gestern bereits kenne.

          Kommentar


          • #6
            Dann probiers mal mit Fantasie, wie könnte das denn funktionieren?

            Kommentar


            • #7
              Sinnvoll wäre wohl noch, die Schreibweise einheitlich, bspw. auf Kleinschreibung umzuwandeln.

              Ne will ich nicht lernen. Ich stellte die Frage nur, weil ich bereits mehr als alles über PHP weiß und die Lottozahlen von gestern bereits kenne.
              Solche Antworten kannst Du Dir echt sparen. Die Frage war berechtigt. Wenn Du php lernen willst, wärst Du sicherlich erstmal mit einem Grundlagenkurs gut beraten.

              http://www.php.de/php-einsteiger/489...rundlagen.html

              Wenn Du ansonsten nur eine Lösung abgreifen willst und meinst Programmieren meint die Arbeit anderer als Schnipsel zu kombinieren, dann bist Du hier falsch.

              Kommentar

              Lädt...
              X