Block Filter Bad Words

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

BebeF
Average Member
Mesaje: 105
Membru din: Lun Iul 11, 2005 8:00 am

Block Filter Bad Words

Mesajde BebeF » Joi Dec 16, 2010 11:02 am

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!");
}



spint
Average Member
Mesaje: 150
Membru din: Joi Dec 03, 2009 10:23 am
Contact:

Mesajde spint » Joi Dec 16, 2010 11:35 am

O sotie buna isi iarta intotdeauna sotul atunci cand ea greseste
|

nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Mesajde nevvermind » Joi Dec 16, 2010 11:41 am

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.

BebeF
Average Member
Mesaje: 105
Membru din: Lun Iul 11, 2005 8:00 am

Mesajde BebeF » Joi Dec 16, 2010 3:42 pm


nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Mesajde nevvermind » Joi Dec 16, 2010 4:38 pm


BebeF
Average Member
Mesaje: 105
Membru din: Lun Iul 11, 2005 8:00 am

Mesajde BebeF » Joi Dec 16, 2010 6:22 pm


BebeF
Average Member
Mesaje: 105
Membru din: Lun Iul 11, 2005 8:00 am

Mesajde BebeF » Dum Dec 19, 2010 11:14 am


nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Mesajde nevvermind » Dum Dec 19, 2010 12:35 pm


danutz0501
Average Member
Mesaje: 104
Membru din: Vin Sep 10, 2010 7:43 pm

Mesajde danutz0501 » Dum Dec 19, 2010 5:33 pm


nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Mesajde nevvermind » Dum Dec 19, 2010 5:50 pm


danutz0501
Average Member
Mesaje: 104
Membru din: Vin Sep 10, 2010 7:43 pm

Mesajde danutz0501 » Dum Dec 19, 2010 6:51 pm


BebeF
Average Member
Mesaje: 105
Membru din: Lun Iul 11, 2005 8:00 am

Mesajde BebeF » Dum Dec 19, 2010 7:36 pm


BebeF
Average Member
Mesaje: 105
Membru din: Lun Iul 11, 2005 8:00 am

Mesajde BebeF » Lun Dec 20, 2010 4:20 pm

Ultima oară modificat Joi Dec 23, 2010 11:33 pm de către BebeF, modificat de 2 ori în total.

danutz0501
Average Member
Mesaje: 104
Membru din: Vin Sep 10, 2010 7:43 pm

Mesajde danutz0501 » Mar Dec 21, 2010 8:28 pm


nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Mesajde nevvermind » Mar Dec 21, 2010 8:48 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


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 27 vizitatori