phpRS help fórum : phpRS Fórum
Hlavní diskuzní phpRS fórum. Najdete zde odpovědi na otázky týkající se provozu a instalace phpRS systému.
phpRS - redakční a informační systém
Zablokování určitého výrazu v komentářích
Zaslán uživatelem/kou: cross182 (IP adresa zaznamenána)
Datum: 2009-03-28, 15:29

Zdravím.
Předem se omlouvám, jestli se to tu už řešilo, teď nemám vůbec čas to hledat (nemám ani moc času napsat tento příspěvek), tak pokud se to tu řešilo, aspoň mi prosím hoďte výrazy, které mám vyhledávat.
Jde mi o to, že jsme spustili nový web a nějaký maník nám do komentářů pořád háže odkazy na konkurenci. Jde nějak defaultně nastavit, aby se např. při napsání toho výrazu neodeslal komentář, popř. se nahradil jiným řetězcem?

Děkuji.

×××---×××
www.ava-plus44.com
www.blink-182.cz

Re: Zablokování určitého výrazu v komentářích
Zaslán uživatelem/kou: xsuchy09 (IP adresa zaznamenána)
Datum: 2009-03-28, 16:10

1) jaká verze phpRS?
2) jaký web (z toho vyplyne i verze phpRS)?
btw:
a) php.net
b) php.net
Doporučuju použití b) při zobrazení komentářů (aby to v komentáři v DB zůstalo, ale nebylo to zobrazeno).

========================
WEB: Publikační systém WAMOS
SEO: SEO analýza zdarma
OPEN PROJECTS: Studentský portál VUT
HOSTING: WebGlobe.cz
ICQ: 313887644
EMAIL: xsuchy09(at)centrum.cz
========================



Celkem upraveno 1×. Poslední úprava xsuchy09 v 28.03.2009 16:11.

Re: Zablokování určitého výrazu v komentářích
Zaslán uživatelem/kou: cross182 (IP adresa zaznamenána)
Datum: 2009-03-28, 16:21

Jo pardon, je to verze 2.80, viz web. www.blink-182.cz

×××---×××
www.ava-plus44.com
www.blink-182.cz

Re: Zablokování určitého výrazu v komentářích
Zaslán uživatelem/kou: cross182 (IP adresa zaznamenána)
Datum: 2009-03-28, 18:27

Ok, takže bych použil to co doporučuješ.
Mám upraveny komentáře tak, aby se zobrazovaly hned pod článkem.
Otevřu tedy view.php, najdu function ZobrazKoKom() a tu to mám někde napsat?
Mám tam napsat něco jako
str_replace('obsah', 'nechtene-slovo', 'nahrazene-slovo');
či něco jako
str_replace($data[$akt_komentar][4], 'nechtene-slovo', 'nahrazene-slovo');

Ta fce vypadá takto:
function ZobrazKoKom()
{
// bezpecnostni korekce
$GLOBALS["cisloclanku"]=phprs_sql_escape_string($GLOBALS["cisloclanku"]);

$dotaz="select idk,datum,obsah,od,od_mail,titulek,reakce_na,registrovany,reg_prezdivka from ".$GLOBALS["rspredpona"]."komentare where clanek='".$GLOBALS["cisloclanku"]."' order by idk";
$dotazkom=phprs_sql_query($dotaz,$GLOBALS["dbspojeni"]);
$pocetkom=phprs_sql_num_rows($dotazkom);

if ($pocetkom==0):
  // chyba - neni prirazen zadny komentar
  echo "<p align=\"center\" class=\"kom-z\">".RS_KO_NIC."</p>\n";
else:
  // pridavaci link
  /*echo "<p align=\"center\" class=\"kom-link\"><a href=\"comment.php?akce=new&amp;cisloclanku=".$GLOBALS["cisloclanku"]."\">".RS_KO_PRIDAT."</a></p>\n";*//*TEXT PŘIDAT NOVÝ KOMENTÁŘ POD KOMENTÁŘI*/
  // prevod do pole
  for ($pom=0;$pom<$pocetkom;$pom++):
    // nacteni dat z DB
    $akt_pole_data=phprs_sql_fetch_assoc($dotazkom);
    // pole informaci
    $data[$pom][0]=$akt_pole_data['idk'];     // idk
    $data[$pom][1]=$akt_pole_data['titulek']; // titulek
    $data[$pom][2]=$akt_pole_data['od'];      // autor
    $data[$pom][3]=$akt_pole_data['datum'];   // datum
    $data[$pom][4]=$akt_pole_data['obsah'];   // obsah komentare
    /*$data[$pom][5]=$akt_pole_data['od_mail']; // mail autora*/
    $data[$pom][6]=$akt_pole_data['registrovany'];  // registrovany ctenar
    $data[$pom][7]=$akt_pole_data['reg_prezdivka']; // prezdivka registr. ctenare
    // pom. pole k setrideni
    $pomporadi[$pom][0]=$akt_pole_data['idk'];        // id komentare
    $pomporadi[$pom][1]=$akt_pole_data['reakce_na'];  // id predka komentare
    $pomporadi[$pom][2]=0;                            // nastaveni stavu radku
  endfor;
  // setrideni
  $poradi=SetridKomentare($pomporadi);
  // zobrazeni komentaru
  for($pom=0;$pom<$pocetkom;$pom++):
    $akt_komentar=$poradi[$pom][0]; // $poradi[$pom][0] -> obsahuje hodnotu poradi v poli $data
    $akt_level=$poradi[$pom][1]; // uroven vnoreni
    // hlavicka
    echo "<div class=\"kom-cely-ram\" style=\"margin-left: ".(10*$akt_level)."px;\">\n";
    echo "<div class=\"kom-hlavicka\">\n";
    echo "<b>".RS_KO_ZPR_ZE_DNE.":</b> ".MyDatetimeToStd($data[$akt_komentar][3])." &nbsp;&nbsp;&nbsp;&nbsp;";
    echo "<a href=\"comment.php?akce=re&amp;cisloclanku=".$GLOBALS["cisloclanku"]."&amp;ck=".$data[$akt_komentar][0]."\">".RS_KO_ZPR_REG."</a><br />\n";
    echo "<b>".RS_KO_ZPR_AUT.":</b> ";
    if ($data[$akt_komentar][6]==1): // test na registraci ctenare
      echo "<u>".$data[$akt_komentar][7]."</u> [Blink-182.cz Fan]";
    else:
      echo RS_KO_NEREG." ".$data[$akt_komentar][2];
    endif;       
    if ($data[$akt_komentar][5]!=''): // test na existenci e-mailu
      echo " (".$data[$akt_komentar][5].")";
    endif;
    echo "<br />\n";
    echo "<b>".RS_KO_ZPR_TIT.":</b> ".VycistiKoment($data[$akt_komentar][1]);
    echo "</div>\n";
    // telo
    echo "<div class=\"kom-text\">";
    echo VycistiKoment($data[$akt_komentar][4]);
    echo "</div>\n";
    echo "</div>\n";
    echo "<br />\n";
  endfor;
endif;
// paticka
/*echo "<p align=\"center\" class=\"kom-link\"><a href=\"comment.php?akce=new&amp;cisloclanku=".$GLOBALS["cisloclanku"]."\">".RS_KO_PRIDAT."</a></p>\n";*/ /*TEXT PŘIDAT NOVÝ KOMENTÁŘ POD KOMENTÁŘI*/
}


×××---×××
www.ava-plus44.com
www.blink-182.cz



Celkem upraveno 1×. Poslední úprava cross182 v 28.03.2009 18:29.

Re: Zablokování určitého výrazu v komentářích
Zaslán uživatelem/kou: cross182 (IP adresa zaznamenána)
Datum: 2009-03-29, 16:50

Tak jsem zkusil přepsat
echo VycistiKoment($data[$akt_komentar][4]);
na
echo VycistiKoment(str_replace($data[$akt_komentar][4],'zajímavé','aaa')
A nahradilo mi to všechny komentáře za "aaa", ne jen to slovo 'zajímavé' ... takže se to musí někde ještě pitvat na jednotlivé výrazy?

×××---×××
www.ava-plus44.com
www.blink-182.cz

Re: Zablokování určitého výrazu v komentářích
Zaslán uživatelem/kou: xsuchy09 (IP adresa zaznamenána)
Datum: 2009-03-29, 19:51

Stačilo by si číst pořádně dokumentaci, na kterou jsem tě odkazoval:
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
Což znamená - vrací mixed (typ) proměnné (tedy může vracet vícero typů), parametry jsou mixed $search (co se má hledat), mixed $replace (čím se to má nahradit), mixed $subject (kde se to má hledat) a nepovinný parametr, který uchová počet nahrazení. Takže se podle toho zařiď a možná ti to bude fungovat jak požaduješ :)

Nápověda:
$string = 'Ahoj, jsi pekny loleq.';
echo str_replace('loleq', 'machr', $string);

vypíše:
Ahoj, jsi pekny machr.


========================
WEB: Publikační systém WAMOS
SEO: SEO analýza zdarma
OPEN PROJECTS: Studentský portál VUT
HOSTING: WebGlobe.cz
ICQ: 313887644
EMAIL: xsuchy09(at)centrum.cz
========================

Re: Zablokování určitého výrazu v komentářích
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2009-03-30, 13:13

Ja mám niekde v archíve plugin, kde sa dajú definovať výrazy, ktoré potom do komentárov nepustí. Filter je pred uložením komentára. Žiaľ neviem to teraz narýchlo nájsť, ale nie je problém niečo podobné vytvoriť za pár minút.



Celkem upraveno 1×. Poslední úprava pa3k v 30.03.2009 13:14.

Re: Zablokování určitého výrazu v komentářích
Zaslán uživatelem/kou: cross182 (IP adresa zaznamenána)
Datum: 2009-04-03, 22:24

Jo díky, už mi to funguje, blbě jsem si to přečetl.
A když chci blokovat více výrazů - např. seznam.cz a www.seznam.cz a další a další, vepisuje se to do jednoho řádku? Nebo pod sebe normálně?

echo VycistiKoment(str_replace('seznam.cz', '...', $data[$akt_komentar][4]));
echo VycistiKoment(str_replace('www.seznam.cz', '...', $data[$akt_komentar][4]));

Popř. místo seznam.cz dát proměnnou $spam, kterou naplnit hodnotami, jež zde nechci?
A ještě bych chtěl i ostatní pole takto chránit - ne jen text komentu, ale i nick a předmět ... to se udělá jak?

×××---×××
www.ava-plus44.com
www.blink-182.cz



Lituji, ale pouze registrovaní uživatelé mohou zasílat příspěvky do této sekce.
This forum powered by Phorum and designed by STaNBoSS.