Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Blokowanie znaków
Arhimenrius
post
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 3
Dołączył: 19.04.2011

Ostrzeżenie: (0%)
-----


Witam. Więc tak. Mam skrypt w JS, który służy do blokowania liter:
  1. <input type="<? echo $type ?>" name="<? echo $name ?>" value="<? echo $_POST[''.$name.''] ?>" onkeyup="this.value=value.replace(/[^\1-\9]/g,'')" />


Jednak on niektóre znaki specjalne przepuszcza (mimo że starałem się by były tylko kropki). Dlatego próbuję je wyrzucić użytkownikowi za pomocą PHP:
  1. if(strpos($price, ',') === 'true' || strpos($price, '/') === 'true' || strpos($price, '\'') === 'true' || strpos($price, '"') === 'true' || strpos($price, '!') === 'true' || strpos($price, '#') === 'true' || strpos($price, '$') === 'true' || strpos($price, '%') === 'true' || strpos($price, '&') === 'true' || strpos($price, '*') === 'true' || strpos($price, '(') === 'true' || strpos($price, ')') === 'true' )
  2. {
  3. $this -> errorprice = "Podano niedozwolony znak";
  4. }


Jednak to nie pomaga i mimo iż w tekscie są te znaki, nie wyrzuca błędu ;s
Go to the top of the page
+Quote Post
frantic09
post
Post #2





Grupa: Zarejestrowani
Postów: 42
Pomógł: 6
Dołączył: 7.03.2011
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Hej!

A spróbuj może pomyśleć trochę inaczej (IMG:style_emoticons/default/smile.gif) Zamiast określać wszystkie złe przypadki i sprawdzać je, określ jeden wzór i sprawdź go (IMG:style_emoticons/default/smile.gif) Zerknij na kod:
  1. $x = array('1.1','1,1','1e3','22','1.22',22.22);
  2.  
  3. foreach($x as $y){
  4. if(preg_match("/^([0-9])+(\.[0-9]{1,2})?$/",$y)){
  5. echo "$y jest ok";
  6. }else{
  7. echo "$y jest zly";
  8. }
  9. echo "<br/>";
  10. }

W konstrukcji IF sprawdzamy funkcją preg_match tzw pattern na kolejnych zmiennych. Pattern - wyrażenie regularne określone jako "/^([0-9])+(\.[0-9])?$/" znaczy kolejno:
  1. ([0-9])+ //jedna lub więcej cyfr
  2. (\.[0-9])? //możliwa kropka i liczby po niej

Swoje wyrażenie regularne możesz sprawdzać też m.in tutaj

Możesz też wyrażenie zapisać tak: "/^([0-9])+(\.[0-9]{1,2})?$/", a różnicę mamy tutaj:
  1. (\.[0-9]{1,2})

Cyfry w klamerkach {1,2} oznaczają, że po kropce może być jedna lub dwie cyfry (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 23:38