kostenloser Webspace werbefrei: lima-city


Überprüfen ob in Textfeld Code oder Link vorhanden ist

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    ferienwohnung-strasser

    ferienwohnung-strasser hat kostenlosen Webspace.

    Hi,
    in dem Gästebuch auf einer Site schreibt irgendjemand andauernd Links zu Webseiten rein die nicht existieren, er verwendet dabei Forum Links also mit so einem Zeug:
    [url]http://wskahfkjhakjskj.com[/url]shfjshdkfhsdjfhskjdhfkjshdfkjhskdfhskjdhfksjhdfkjsdkg


    Und da ich so etwas nicht haben möchte würde ich gerne Wissen wie man mit PHP überprüft ob ein Code wie dieser also blablabla.com oder ein normaler Link mit http:// vorhanden ist und wenn ja dann darf es nicht gepostet werden.

    Bitte, die Datenbank ist schon angefüllt mit dem Zeug und über mein löschen Script gehen manche Beiträge nicht, danke für eure Hilfe
    :)
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. ferienwohnung-strasser schrieb:
    Hi,
    in dem Gästebuch auf einer Site schreibt irgendjemand andauernd Links zu Webseiten rein die nicht existieren, er verwendet dabei Forum Links also mit so einem Zeug:
    [url]http://wskahfkjhakjskj.com[/url]shfjshdkfhsdjfhskjdhfkjshdfkjhskdfhskjdhfksjhdfkjsdkg


    Und da ich so etwas nicht haben möchte würde ich gerne Wissen wie man mit PHP überprüft ob ein Code wie dieser also blablabla.com oder ein normaler Link mit http:// vorhanden ist und wenn ja dann darf es nicht gepostet werden.

    Bitte, die Datenbank ist schon angefüllt mit dem Zeug und über mein löschen Script gehen manche Beiträge nicht, danke für eure Hilfe
    :)
    yo mey! du nimmst das zwischen [url] und [/url] (also in deinem beispiel 'http://wskahfkjhakjskj.com') und übergibst der funktion parse_url('http://wskahfkjhakjskj.com').
    je nach ergebnis reagierst dann.
  4. zum Beispiel so

    mit einer Funktion: replace_links()
    .... entfernt bzw. ersetzt "[url=...]Links[/url]" und / oder "<a href=..>Links</a>" aus einem String
    .... entfernt bzw. ersetzt "BB URL LINKS" und / oder "A HREF LINKS" aus einem String

    <?php 
    // ----------------------------------------------------------------- 
    
    function replace_links ($string, $a=true, $b=true) { 
    
    $new_str = $string; 
    
    $new_str = stripslashes($new_str); 
    ## $new_str = html_entity_decode($new_str); 
    
    // -------------------------------------- 
    
    if ($a === true) { 
    	
    	$pattern1 = '/<a(.*?)<\/a>/is';
    	## $replace1 = ' '; 
    	$replace1 = ' <!-- A HREF LINK entfernt  --> '; 
    	$matches1 = array(); 
    	$res1 = preg_match_all($pattern1, $new_str, $matches1);
    	if ($res1) { 
    		foreach($matches1[0] as $mitem1) { 
    		$new_str = str_replace($mitem1,$replace1,$new_str); 
    		} 
    	} 
    
    } 
    
    // -------------------------------------- 
    
    if ($b === true) { 
    
    	$pattern2 = '/\[url(.*?)\[\/url\]/is';
    	## $replace2 = ' '; 
    	$replace2 = ' <!-- BB URL LINK entfernt  --> '; 
    	$matches2 = array(); 
    	$res2 = preg_match_all($pattern2, $new_str, $matches2);
    	if (!empty($matches2[0])) { 
    		foreach($matches2[0] as $mitem2) { 
    		$new_str = str_replace($mitem2,$replace2,$new_str); 
    		} 
    	} 
    	
    } 
    
    // -------------------------------------- 
    
    return $new_str; 
    
    }
    
    // ----------------------------------------------------------------- 
    
    
    
    // -------- Aufruf / Beispiel der Funktion:  --------- 
    
    
    // ----------------------------- 
    $gb_text1 = 'Hallo blabla [url]http://xyz.com[/url] und mehr Text <a href="http://abc.org">LINK1</a> Bla blablabla blabla [url=\'http://uvw.com\']KLICK[/url] oder auch <a href="http://def.org">LINK2</a> Blabla lalelu'; 
    $gb_text2 = 'Hallo blabla http://xyz.com und mehr Text [URL]http://bbb.ooo[/URL] Blabla lalelu hihihi'; 
    
    // ----------------------------- 
    $out_text1 = replace_links($gb_text1); 
    $out_text2 = replace_links($gb_text2); 
    
    // ----------------------------- 
    print "<br />\n"; 
    print "<br />\n"; 
    
    print "<p>--------- Vorher / Nachher: (1) --------- </p>\n"; 
    print "<p style=\"background:#EFEFEF;\">".htmlentities($gb_text1)."</p>\n"; 
    print "<p style=\"background:#EFEFEF;\">".htmlentities($out_text1)."</p>\n"; 
    
    // ----------------------------- 
    print "<br />\n"; 
    print "<br />\n"; 
    
    print "<p>--------- Vorher / Nachher: (2) --------- </p>\n"; 
    print "<p style=\"background:#EFEFEF;\">".htmlentities($gb_text2)."</p>\n"; 
    print "<p style=\"background:#EFEFEF;\">".htmlentities($out_text2)."</p>\n"; 
    
    // ----------------------------- 
    print "<br />\n"; 
    print "<br />\n"; 
    
    // ----------------------------------------------------------------- 
    ?>


    Ausgabe

    --------- Vorher / Nachher: (1) --------- 
    
    Hallo blabla [url]http://xyz.com[/url] und mehr Text <a href="http://abc.org">LINK1</a> Bla blablabla blabla [url='http://uvw.com']KLICK[/url] oder auch <a href="http://def.org">LINK2</a> Blabla lalelu
    
    Hallo blabla <!-- BB URL LINK entfernt --> und mehr Text <!-- A HREF LINK entfernt --> Bla blablabla blabla <!-- BB URL LINK entfernt --> oder auch <!-- A HREF LINK entfernt --> Blabla lalelu
    
    
    --------- Vorher / Nachher: (2) --------- 
    
    Hallo blabla http://xyz.com und mehr Text [URL]http://bbb.ooo[/URL] Blabla lalelu hihihi
    
    Hallo blabla http://xyz.com und mehr Text <!-- BB URL LINK entfernt --> Blabla lalelu hihihi


    durch "was" die Link-Codes oder BB-Codes ersetzt werden ...
    <!-- BB URL LINK entfernt -->

    kann man einfach mit $replace1 und $replace2 Variablen einstellen
  5. ktowxl schrieb:
    ... durch "was" die Link-Codes oder BB-Codes ersetzt werden ...
    <!-- BB URL LINK entfernt -->
    kann man einfach mit $replace1 und $replace2 Variablen einstellen
    yo mey! lass dich in deinem erholsamen schlaf nicht all zu sehr stören, aber er meinte unter 'link' nicht unbedingt 'anchor' (auch nicht mit BB-code ;)
  6. czibere schrieb:
    ... aber er meinte unter 'link' nicht unbedingt 'anchor' (auch nicht mit BB-code ;)


    doch genau das (mit BB-Code URL entfernen) meinte er soweit ich es - nach genauem Lesen - verstanden habe, ich habe halt noch als "Bonus" das Entfernen von <a HREF Links dazu ... :)

    zum Problem TE .... er will zwei Dinge

    1) Prüfung der Formular-Einngabe
    verhindern, dass in Zukunft jemand überhaupt so eine BB-Code URLs eintragen / speichern kann

    2) Entfernen unerwünschter Texte aus DB
    aus den bereits so eingetragenen Texten (DB) diese nicht erwünschten BB-Codes wieder entfernen



    ich habe dann also einen Ansatz zim Punkt 2) gezeigt / geliefert,
    ... wie er mit einem Pattern und preg_match_all() die BB Link Codes entfernen kann

    ... und ... als Bonus .... habe ich halt auch noch die Möglichkeit dazu gemacht / gezeigt,
    wie man nicht nur BB-Code Links sondern auch HTML Links <a href=...> entfernen kann,
    falls gewünscht

    um es anzuwenden muss er nur die Texte aus der DB durch-gehen (SELECT)
    und wenn Treffer dann als neuer "gesäuberter" Text speichern (UPDATE)


    auch für Punkt 1) ..... mit so einen Pattern und und preg_match_all()
    kann mann evtl. auch die User Formular-Eingabe (mit PHP) prrüfen
    ... einfach auf der Ziel-Seite vom Formular diese Prüfung machen
    und bei Treffer den neuen Eintrag nicht speichern + Meldung ausgeben
    ... oder halt ein JavaScript zum Eingabe vor dem Senden prüfen
  7. s**************3

    Hallo,
    ferienwohnung-strasser schrieb:
    ... Links zu Webseiten rein die nicht existieren, ...

    ich lese da, dass es ihm nicht darum geht Links zu unterdrücken sondern nur Links zu Seiten, die es nicht gibt, aber leider meldet er sich ja nicht mehr.
    Das liefert keine de bisher vorgeschlagenen Ansätze und mir fällt auch nicht mehr ein, als die Seite selbst abzurufen. Das wäre aber des Guten wohl zu viel, würde völlig unnötigen Traffic produzieren und man würde Spammer anlocken. Ausserdem ist es ja streng genommen nicht damit getan das einmalig bei der Erstellung des Eintrags zu machen, weil die Seite ja später jederzeit entfernt oder generiert werden kann oder auch mal nur vorübergehend nicht errreichbar sein kann.
    Praktisch würde ich auch einfach alles, was ein valider URL ist schlicht unterbinden, also die Lösung von czibere.

    LG strommanager
  8. strommanager2013 schrieb:
    ... ich lese da, dass es ihm nicht darum geht Links zu unterdrücken sondern nur Links zu Seiten, die es nicht gibt, ...
    ok! du liest zwischen den zeilen, wobei ich mich - primitiver weise - darauf beschränke, die zeilen zu lesen:
    ferienwohnung-strasser schrieb:
    ... wie man mit PHP überprüft ob ein Code wie dieser also blablabla.com oder ein normaler Link mit http:// vorhanden ist und wenn ja dann darf es nicht gepostet werden...
    demnach kan zu dem was ich vorher schon gepostet habe der test wie folgt präzisiert weden:
    $host = <genau der hostname, der zwischen [url] und [/url] steht>
    if($host === gethostbyname($host)) {
      // ja dann ist der poster ein hudsvieh, weil gethostbyname($host) nur
      // dann den hostnamen zurückgibt, wenn kein IP vorhanden ist!;
      // und genau hier kannst du seine posting droppen ;)
    }
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!