Regular Extension pomoć

1

Regular Extension pomoć

offline
  • Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
  • Pridružio: 13 Jun 2010
  • Poruke: 307
  • Gde živiš: Subotica

Treba mi pomoć oko Regex-a. Naime, malo se mučim oko dozvole/zabrane određenih karaktera i simbola.
Treba mi neka pomoć od iskusnijih kolega u ovom polju.
Hoću da profiltriram neke sadržaje i da dozvolim samo slova a-Z, brojeve 0-9 i simbole poput tačke, upitnika, uzvičnika, zareza, zagrada... samo te osnovne stvari:

( -+,.;?"!%:()/*' )

Drugi simboli mi ne trebaju. Kako to da uradim?
Hvala!



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 17 Jun 2012
  • Poruke: 727

Probaj ovaj tutorijal ako je to ono na sto si mislio: Tekst za link



offline
  • Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
  • Pridružio: 13 Jun 2010
  • Poruke: 307
  • Gde živiš: Subotica

Alien vs Predator ::Probaj ovaj tutorijal ako je to ono na sto si mislio: Tekst za link
Mhm... to je to... Muči me nešto, pokušavam da napravim kvalitetan filter za input form prilikom registracije i pretrage na jednom portalu jer predhodno su neki pokušavali da ubace svakakve HTML, PHP i javaskript pozive u bazu preko $_POST funkcija.

Predhodni programer nije ni razmišljao o takvim stvarima pa je napravio takav kod da si čak mogao umesto slike uploadovati bilo koji fajl, bilo koje ekstenzije. Užas.

Napravio sam filter od HTML, XML i PHP tagova ali nije mi to dovoljno jer može se običnim redoslednim ubacivanjem opet napraviti poziv. Zato sam hteo da ograničim i karakterno. Da dozvolim samo slova i brojeve i još po koji simbol za koji znam da neće škoditi.

Ima li neko rešenje za kvaliteto filtriranje ulaznih stringova?

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3545
  • Gde živiš: 127.0.0.1

Naravno da ima Wink

$filtered = preg_replace("@([^a-zA-Z0-9\+\-_()*!,.;\?:'%/\"]+)@Ui", "", $not_filtered);

offline
  • Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
  • Pridružio: 13 Jun 2010
  • Poruke: 307
  • Gde živiš: Subotica

Rastafarii ::Naravno da ima Wink

$filtered = preg_replace("@([^a-zA-Z0-9\+\-_()*!,.;\?:'%/\"]+)@Ui", "", $not_filtered);

Hvala ti mnogo! Opet brzo kucaš! Smajli
$filtered = preg_replace("@([^a-zA-Z0-9\+\-_()*!,.;\?:'%/\"]+)@Ui", "$1", $not_filtered);
Radi perfektno! Ziveli

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3545
  • Gde živiš: 127.0.0.1

Nope, ne kucam brzo. Ovaj put sam testirao Wink Evo i objasnjenja:
$filtered = preg_replace("@([^a-zA-Z0-9\+\-_()*!,.;\?:'%/\"]+)@Ui", "", $not_filtered);
Ima sledece znacenje:
Citat:Zameni sve karaktere unutar promenljive $not_filtered koji NE pripadaju definisanom nizu nicim i rezultat smesti u promenljivu $filtered.
Tvoja izmena:
$filtered = preg_replace("@([^a-zA-Z0-9\+\-_()*!,.;\?:'%/\"]+)@Ui", "$1", $not_filtered);
Ima sledece znacenje:
Citat:Zameni sve karaktere unutar promenljive $not_filtered koji NE pripadaju definisanom nizu samim sobom i rezultat smesti u promenljivu $filtered.
I u sustini se svodi na:
$filtered = $not_filtered;
Evo i malog testa:
$test = "test`~!@#$%^&*()_-+="; // trebalo bi da "prezivi" test!%*()_-+ (karakteri: `~@#$^&= nisu dozvoljeni) echo preg_replace("@([^a-zA-Z0-9\+\-_()*!,.;\?:'%/\"]+)@Ui", "$1", $test); // rezultat: test`~!@#$%^&*()_-+= echo preg_replace("@([^a-zA-Z0-9\+\-_()*!,.;\?:'%/\"]+)@Ui", "", $test); // rezultat: test!%*()_-+

Jesi li i dalje siguran da "brzo kucam"? Ziveli

offline
  • Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
  • Pridružio: 13 Jun 2010
  • Poruke: 307
  • Gde živiš: Subotica

Upravu si, moja greška, izvini. Odličan je kod. Radi perfektno. Hvala ti!

offline
  • PHP programer
  • Pridružio: 26 Okt 2007
  • Poruke: 1063
  • Gde živiš: u Apache

Vidim da ovde dobro riplejsujete. Smile

Imam funkciju s kojom sprečavam da se sajt uruši ako neko unese single quote jedanput, single se unese u bazu ali se sačuva integritet sajta.

function mysql_escape_mimic($inp) {     if(is_array($inp))         return array_map(__METHOD__, $inp);     if(!empty($inp) && is_string($inp)) {         return str_replace(array('\\', "\0", "\n", "\r", "'", '"', "\x1a"), array('\\\\', '\\0', '\\n', '\\r', "\\'", '\\"', '\\Z'), $inp);     }     return $inp; }

Problem je ako neko unese npr. u blizini 'Kluza' znači single quote dvaput.

Idealno bi bilo da se navodnici zamene sa slovom ć i uopšte sva naša slova jer kad neko kuca npr., već a nije prebacio na našu tastaturu, sajt se sruši i iskoči syntax error zbog navodnika.

Ili, ako bi barem moglo da se single quote zameni sa double quote.

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3545
  • Gde živiš: 127.0.0.1

Za to ne moras da palis RegExp Wink Dovoljan ti je i addslashes() (posto je mysql_real_escape_string() deprecated od PHP 5.5).

<?php $str = "Is your name O'reilly?"; // Outputs: Is your name O\'reilly? echo addslashes($str); ?>

Ili, u tvom slucaju:

<?php $str = "u blizini 'Kluza'"; // Outputs: u blizini \'Kluza\' echo addslashes($str); ?>

offline
  • PHP programer
  • Pridružio: 26 Okt 2007
  • Poruke: 1063
  • Gde živiš: u Apache

ok hvala, razumeo sam te i znam za mysql escape itd.

Ali nije problem za taj jedan pojam koji je neko uneo, šta kad sledeći korisnik unese npr.,

u blizini 'Vukovog spomenika' pa bi onda trebalo npr.
$str = " '.' "; echo addslashes($str);

Ko je trenutno na forumu
 

Ukupno su 1110 korisnika na forumu :: 48 registrovanih, 4 sakrivenih i 1058 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 1798 - dana 19 Sep 2019 18:42

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 4channer, _commandos_, A.R.Chafee.Jr., AK - 230, aljosa7, amaterSRB, azarakhsh, babaroga, BlaCkMilK, bounty hunters, branko72, bulovic, Buzdovan2, caesar2, cole77, dozorni, elzike7, Eyes Wide Shut, Gama, Georgius, goran.vvv, Kubovac, Ljubitelj2, madza, MarKhan, MB120mm, Mercury, misa1xx, nenad812, nikoladi, ostoja, pedjolino76, pein, RecA2, Recce, royst33, slonic_tonic, Stepp, stug, theNedjeljko, Toni, vathra, versus, vespa nikola, VJ, vladom6, voja64, zoidbergs