Überprüfen ob in Textfeld Code oder Link vorhanden ist
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
beispiel
code
dank
eingabe
eintrag
entfernen
entfernt code
existieren
ferienwohnung
forum
funktion
host
http
string
text
treffer
url
variablen einstellen
wissen
zeug
-
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
:) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ferienwohnung-strasser schrieb:
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').
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
:)
je nach ergebnis reagierst dann. -
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
-
ktowxl schrieb:
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 ;)
... durch "was" die Link-Codes oder BB-Codes ersetzt werden ...
kann man einfach mit $replace1 und $replace2 Variablen einstellen<!-- BB URL LINK entfernt -->
-
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
-
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 -
strommanager2013 schrieb:
ok! du liest zwischen den zeilen, wobei ich mich - primitiver weise - darauf beschränke, die zeilen zu lesen:
... ich lese da, dass es ihm nicht darum geht Links zu unterdrücken sondern nur Links zu Seiten, die es nicht gibt, ...ferienwohnung-strasser schrieb:
demnach kan zu dem was ich vorher schon gepostet habe der test wie folgt präzisiert weden:
... 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...$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 ;) }
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage