Block Filter Bad Words
Moderatori: Moderatori, Start Moderator
Block Filter Bad Words
salut. Mi-am facut un questbook. Am incercat sa fac un mic cod in php care trebuie sa-mi selecteze din baza de date cuvintele cheie (bad words - ex. *, *, etc), si daca le gaseste, sa dea un mesaj de eroare, adica sa blocheze POST in php. Dar ceva nu merge. Ma puteti ajuta?
CREATE TABLE IF NOT EXISTS `badwords` (
`id` int(11) NOT NULL auto_increment,
`words` char(60) NOT NULL default '',
PRIMARY KEY (`id`)
);
INSERT INTO `badwords` (`id`, `words`) VALUES
(1, '*');
INSERT INTO `badwords` (`id`, `words`) VALUES
(2, '*');
//DESCHID CONEXIUNEA
$conn = mysql_connect("localhost", "user", "pass");
mysql_select_db("user",$conn);
//SELECTEZ CUVINTELE SI LE OPRESC
$sql= "SELECT words FROM badwords";
if ($sql == true)
{
die("banned word was found!");
}
CREATE TABLE IF NOT EXISTS `badwords` (
`id` int(11) NOT NULL auto_increment,
`words` char(60) NOT NULL default '',
PRIMARY KEY (`id`)
);
INSERT INTO `badwords` (`id`, `words`) VALUES
(1, '*');
INSERT INTO `badwords` (`id`, `words`) VALUES
(2, '*');
//DESCHID CONEXIUNEA
$conn = mysql_connect("localhost", "user", "pass");
mysql_select_db("user",$conn);
//SELECTEZ CUVINTELE SI LE OPRESC
$sql= "SELECT words FROM badwords";
if ($sql == true)
{
die("banned word was found!");
}
-
nevvermind
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
Ca sa-ti dai seama putin de ce modificari tre' sa faci, uite un exemplu:
- Viiiiagra
- Vi_agra
- *
Intelegi la fel de bine ce spun primele doua ca si al treilea (ala fiind captat si "cenzurat"), nu?
Foloseste strategia aplicata de Drupal:
- pune exact ce a introdus user-ul in baza de date - mai putin ghilimelele singulare (sa pui exact ce a vrut userul nu inseamna sa neglijezi injectarea sql).
- filtrarea cuvintelor (anti XSS, XSRF, anti-bad-word si ce mai vrei tu) fa-o la afisare
Altfel pui userul sa astepte pana ce ii cureti tu textul numai ca sa-si vada mesajul introdus cu succes.
- Viiiiagra
- Vi_agra
- *
Intelegi la fel de bine ce spun primele doua ca si al treilea (ala fiind captat si "cenzurat"), nu?
Foloseste strategia aplicata de Drupal:
- pune exact ce a introdus user-ul in baza de date - mai putin ghilimelele singulare (sa pui exact ce a vrut userul nu inseamna sa neglijezi injectarea sql).
- filtrarea cuvintelor (anti XSS, XSRF, anti-bad-word si ce mai vrei tu) fa-o la afisare
Altfel pui userul sa astepte pana ce ii cureti tu textul numai ca sa-si vada mesajul introdus cu succes.
-
nevvermind
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
Fa cumva astfel incat sa lucrezi cu string-ul inainte de interpretarea smiley-urilor (daca poti). Daca incepi sa filtrezi HTML-ul prin regex, vei avea dureri de cap.
O alternative ar fi ca pentru fiece cuvant sa elimini simbolurile (un str_replace cu array de simboluri - -, _, %, & etc.) si sa compari noul string cu cel din "lista neagra".
Mai poti folosi clase speciale de interpretare a HTML-ului, pentru a elimina temporar etichetele HTML si a putea aplica functia pe acel text/string.
http://stackoverflow.com/questions/2929 ... er-for-php
O alternative ar fi ca pentru fiece cuvant sa elimini simbolurile (un str_replace cu array de simboluri - -, _, %, & etc.) si sa compari noul string cu cel din "lista neagra".
Mai poti folosi clase speciale de interpretare a HTML-ului, pentru a elimina temporar etichetele HTML si a putea aplica functia pe acel text/string.
http://stackoverflow.com/questions/2929 ... er-for-php
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 27 vizitatori