ďťż
 
[MySQL4][PhpBB] Usuwanie spamu ? ďťż
 
[MySQL4][PhpBB] Usuwanie spamu ?
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[MySQL4][PhpBB] Usuwanie spamu ?



Andrzej Kmicic - 10-09-2006 01:02
[MySQL4][PhpBB] Usuwanie spamu ?
 
Jakiś nadgorliwiec zalewa moje forum wiadomosciami z dziedziny kasyn,pokera itp
.... Niestety twórcy forum nie wyposażyli tego forum w grupowe usuwanie postów
tego rodzaju.

Posty w forum phpbb są w dwu tabelach 'phpbb_posts' i 'phpbb_post_text' jak
usunąć niechciany spam posługując się np słowami kluczowymi np 'poker', 'casino'
itp. Tekst rozpoznawalny jest w tabeli phpbb_posts_text natomiast trzeba też
usunąć posty z tabeli phpbb_posts. Obie tabele połączone są kolumną 'post_id'.
Czy można to zrobić pojedyńczym zapytaniem SQL ?.
próbowałem tak:

DELETE FROM `phpbb_posts` WHERE post_id = ( SELECT post_id
FROM `phpbb_posts_text`
WHERE `post_subject` LIKE '%poker%' )

ale zwraca mi błąd ?.
--
Andrzej Kmicic





Artur Gancarz - 10-09-2006 01:02

  Użytkownik Andrzej Kmicic napisał:
> Jakiś nadgorliwiec zalewa moje forum wiadomosciami z dziedziny kasyn,pokera itp
> ... Niestety twórcy forum nie wyposażyli tego forum w grupowe usuwanie postów
> tego rodzaju.
>
> Posty w forum phpbb są w dwu tabelach 'phpbb_posts' i 'phpbb_post_text' jak
> usunąć niechciany spam posługując się np słowami kluczowymi np 'poker', 'casino'
> itp. Tekst rozpoznawalny jest w tabeli phpbb_posts_text natomiast trzeba też
> usunąć posty z tabeli phpbb_posts. Obie tabele połączone są kolumną 'post_id'.
> Czy można to zrobić pojedyńczym zapytaniem SQL ?.
> próbowałem tak:
>
> DELETE FROM `phpbb_posts` WHERE post_id = ( SELECT post_id
> FROM `phpbb_posts_text`
> WHERE `post_subject` LIKE '%poker%' )
>
> ale zwraca mi błąd ?.

Zamiast "post_id = ...." daj "post_id in (select ...)"

Powinno zadziałać, bo to spełnia warunki, jeśli post_id jest
którymkolwiek z listy po "in". Samo "=" wolno stosować, gdy podzapytanie
zwraca TYLKO jedną wartość.

Tutaj chciałbym nadmienić, że bardzo ważne jest, czy masz MySQL 4.0 czy
4.1 (bo 4.0 jeszcze nie obsługiwało podzapytań!!! i taka konstrukcja w
ogóle lnie jest możliwa).

Artur




Andrzej Kmicic - 10-09-2006 01:02

 
Użytkownik "Artur Gancarz" <einstein@agh.edu.pl> napisał w wiadomości
news:edtmbk$h3n$1@news.agh.edu.pl...
>> próbowałem tak:
>>
>> DELETE FROM `phpbb_posts` WHERE post_id = ( SELECT post_id
>> FROM `phpbb_posts_text`
>> WHERE `post_subject` LIKE '%poker%' )
>>
>> ale zwraca mi błąd ?.
>
> Zamiast "post_id = ...." daj "post_id in (select ...)"
>
> Powinno zadziałać, bo to spełnia warunki, jeśli post_id jest którymkolwiek z
> listy po "in". Samo "=" wolno stosować, gdy podzapytanie zwraca TYLKO jedną
> wartość.
>
> Tutaj chciałbym nadmienić, że bardzo ważne jest, czy masz MySQL 4.0 czy 4.1
> (bo 4.0 jeszcze nie obsługiwało podzapytań!!! i taka konstrukcja w ogóle lnie
> jest możliwa).

Dziękuję ślicznie i wszystko jest już jasne, zawiniła niestety wersja MYSQL :(
!!!!

pozdrawiam
Wojtek




ktostam - 10-09-2006 01:02
[ot]Re: [MySQL4][PhpBB] Usuwanie spamu ?
  Andrzej Kmicic napisał(a):
> Użytkownik "Artur Gancarz" <einstein@agh.edu.pl> napisał w wiadomości
> news:edtmbk$h3n$1@news.agh.edu.pl...
>>> próbowałem tak:
>>>
>>> DELETE FROM `phpbb_posts` WHERE post_id = ( SELECT post_id
>>> FROM `phpbb_posts_text`
>>> WHERE `post_subject` LIKE '%poker%' )
>>>
>>> ale zwraca mi błąd ?.
>> Zamiast "post_id = ...." daj "post_id in (select ...)"
>>
>> Powinno zadziałać, bo to spełnia warunki, jeśli post_id jest którymkolwiek z
>> listy po "in". Samo "=" wolno stosować, gdy podzapytanie zwraca TYLKO jedną
>> wartość.
>>
>> Tutaj chciałbym nadmienić, że bardzo ważne jest, czy masz MySQL 4.0 czy 4.1
>> (bo 4.0 jeszcze nie obsługiwało podzapytań!!! i taka konstrukcjaw ogóle lnie
>> jest możliwa).
>
> Dziękuję ślicznie i wszystko jest już jasne, zawiniła niestety wersja MYSQL :(
> !!!!

Maly OT. Lepiej abys takie posty filtrowal przy ich wysylaniu.

pozdrawiam serdecznie





Andrzej Kmicic - 10-09-2006 01:03

  >Maly OT. Lepiej abys takie posty filtrowal przy ich wysylaniu.

>pozdrawiam serdecznie

Przyznam że nie rozumiem ?. Posty te wpisuje ktoś na moje forum !!!.
Poradziłem sobie skryptem PHP.Wobec zalewu mojego forum spamem zrobiłem skrypt
do jego czyszczenia. Należy tylko uzupełniać listę słów nieporządanych w tablicy
$badwords.Skrypt wyręczył mnie z czynności żmudnego ręcznego kasowania postów ze
spamem.
Może komuś się przyda :)

skrypt :

<?
error_reporting(E_ERROR | E_PARSE);

include "connection.php";

$db="moje_forum";

$badwords=array(
"poker",
"online",
"viagra",
"texas",
"blackjack",
"slots",
"roulette",
"craps",
"free",
"casino",
"black jack",
"888");

$ctp=0;
$ctpt=0;
print "<pre>\n";
foreach ($badwords as $key=>$bword)
{
$sql="SELECT post_id FROM `phpbb_posts_text` WHERE `post_subject` LIKE
'%$bword%'";
print "$sql\n";

$resulta=sql($sql);
while ($row = mysql_fetch_array($resulta, MYSQL_NUM))
{
$postid=$row[0];
print "rekord id = $postid\n";
$sql="DELETE FROM phpbb_posts WHERE post_id = $postid";
print "$sql\n";
$resultd=sql($sql);
$k=mysql_affected_rows();
$ctp+=$k;
if ($k==0) echo mysql_errno() . ": " . mysql_error() . "\n";

$sql="DELETE FROM phpbb_posts_text WHERE post_id = $postid";
print "$sql\n";
$resultd=sql($sql);
$k=mysql_affected_rows();
$ctpt+=$k;
if ($k==0) echo mysql_errno() . ": " . mysql_error() . "\n";
}

}

print "Z tabeli phpbb_posts usunięto $ctp rekordów\n";
print "Z tabeli phpbb_posts_text usunięto $ctpt rekordów\n";
print "</pre>";
?>

i jeszcze skrypt inkludowany :

<?
function connection()
{
global $link;
global $dbhost;
global $dbuser;
global $dbpass;
global $db;

if ($link)
{ return $link;
}
else
{
$link = mysql_connect($dbhost, $dbuser, $dbpass);
if (!$link or !mysql_select_db($db,$link)) { return 0;
} else {
return $link;
}
}
}

function sql($query)
{
if (!($link=connection()))
return 0;
else
return mysql_query($query,$link);
}

$dbhost="youhost";
$dbuser="user";
$dbpass="password";
?>

pozdrawiam
AK




ktostam - 11-11-2006 00:51

  Andrzej Kmicic napisał(a):
>> Maly OT. Lepiej abys takie posty filtrowal przy ich wysylaniu.
>
>> pozdrawiam serdecznie
>
> Przyznam że nie rozumiem ?. Posty te wpisuje ktoś na moje forum !!!.
> Poradziłem sobie skryptem PHP.Wobec zalewu mojego forum spamem zrobiłem skrypt
> do jego czyszczenia. Należy tylko uzupełniać listę słów nieporządanych w tablicy
> $badwords.Skrypt wyręczył mnie z czynności żmudnego ręcznego kasowania postów ze
> spamem.
> Może komuś się przyda :)
>
> skrypt :
>
(ciach)

chodzilo mi o to, aby nie usuwac postow ze spamem po fakcie, ale dodac
linnie kodu do phpbb ktora sprawdzi czy wlasnie wysylany post nie jest
czasem spamem, i w razie czego, nie zablokuje go. proste, oszczedne
czasowo i skuteczne

pozdrawiam




Bartosz 'briest' Stepien - 11-11-2006 00:53

  Mistrz Artur Gancarz rzekł:
> Użytkownik Andrzej Kmicic napisał:
>> DELETE FROM `phpbb_posts` WHERE post_id = ( SELECT post_id
[..]
> Tutaj chciałbym nadmienić, że bardzo ważne jest, czy masz MySQL 4.0 czy
> 4.1 (bo 4.0 jeszcze nie obsługiwało podzapytań!!! i taka konstrukcja w
> ogóle lnie jest możliwa).

Podzapytań nie ma, ale zamierzony efekt można osiągnąć od 4.0 przez
multiple-table delete.

--
Ustawa w sprawie reglamentacji śmiechu
nie wpłynęła jeszcze do laski marszałkowskiej.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [Oracle] Jakim poleceniem usuwa sie ca?? scheme bez usuwania usera? =?iso-8859-2?Q?MYSQL_-_szybkie_usuwanie_rekord=F3w_z_tabeli?= [pl/sql] usuwanie znaku nowej lini ze stringa [MS SQL]Usuwanie kolumny zawierajacej DEFAULT [pl/sq] usuwanie 3 znaku od konca w stringu =?iso-8859-2?q?jpg_-_usuwanie_artefakt=F3w_-_programik?= SQL Server: jak zabronić usuwania rekordów? usuwanie zduplikowanych =?ISO-8859-2?Q?tekst=F3w?= FireBird + usuwanie dużej ilości rekordów PS - grupowanie warstw, ich usuwanie i kopiowanie
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • morebeer.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com