Autor Zpráva
Kateřina
Profil *
Ahojte,

potřebovala bych poradit. Udělala jsem si stránku se vzkazy, kam mě lidé píší a dost se stává, že to lidi zneužívají ke spamování URL na jejich stránky. Někdo to vkládá s http:// nekdo jen jako www.

Poradíte mě script, kterým bych mohla tomuto zamezit? Nejlépe jak detekovat tyto odkazy?
Rellik
Profil
No já dělám opačný postup. Když někdo vloží odkaz na stránku tak mi to script převede na "klikací" aktivní odkaz. Takže by to šlo i obráceně - když někdo vloží odkaz tak ho to prostě nezobrazí.
<?php
$vypis = "Text, který se zobrazí na stránce a nemá obsahovat žádný http://odkaz.cz ani www.odkaz.cz";
$vypis_bez_odkazu = $vypis;
$vypis = preg_replace('=([^\s]*)(www\.)=', ' http://www.', $vypis);
$vypis = preg_replace('=([^\s]*)(\w://[www\.]*)([^\s]*)=', '<a href="\\1\\2\\3\\4" target="_blank">\\3</a>', $vypis); // tady se mění na aktivní odkaz
echo $vypis;

echo "<br>";
$vypis_bez_odkazu = preg_replace('=([^\s]*)(www\.)=', ' http://www.', $vypis_bez_odkazu);
$vypis_bez_odkazu = preg_replace('=([^\s]*)(\w://[www\.]*)([^\s]*)=', 'CENSORED', $vypis_bez_odkazu); // tady bude místo odkazu nápis CENSORED
echo $vypis_bez_odkazu;
?>
Kateřina
Profil *
Moc děkuji. Vím že budu už moc vlezlá, ale nevíš jak bych to přesněji mohla použít - upravit to tak, aby to fungovalo? Něco jsem si teď zkoušela, ale výsledek vždy nic moc.
Rellik
Profil
No tak na tom už není co upravovat. Stačí to vložit do scriptu, který má na starost ten výpis příspěvků. Bez konkrétní ukázky kódu toho scriptu víc nikdo neporadí...
Kateřina
Profil *
Potřebuji chybu začlenit podobně, jako dělám kontrolu při odesílání, tj.:
if ($kategorie == "" OR $kategorie == "0") $error .= "<li>Kategorie nebyla vybrána.</li>";


Pokud ve formuláři není chyba, tak provedu další úkon, třeba uložení do mySQL
if (empty($error)) {
// ulozime do mysql apod.
}


Tak že potřebuji udělat to, že pokud bude v textu URL adresa, potřebuji udělat chybu $error .= "<li>V popisu je vložena URL adresa, která tam nesmí být.</li>";
Str4wberry
Profil
V tom případě stačí použít uvedený regulární výraz spolu s funkci preg_match.
Kateřina
Profil *
Zkouším to už přes hodinu a nemohu na to přijít. Kluci prosím, pomůžete mě ještě více?
Dědek
Profil *
Zkus tohle:
if(preg_match('((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)', $zkoumany_text)) $error .= '<li>V popisu je vložena URL adresa, která tam nesmí být.</li>';

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0