Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzanie czy użytkownik użył jakiegoś skryptu
Forum PHP.pl > Forum > PHP
Soker
Siemka, mam taki problem. Mianowicie zastanawiam się jak podczas rejestracji użytkownika wyświetlić błąd który mówił by że dany użytkownik wpisał jakiś kod html php czy tez java. Potrafię zamienić wszystkie dane podane przez użytkownika na litery i cyfry ale wolałbym uświadomić użytkownika że użył niepoprawnych znaków. Mógłby mi ktoś pomóc ze znalezieniem odpowiedniej funkcji ?
Bosslog
A niby jak byś chciał sprawdzać czy coś jest kodem? Przecież kod to też tekst. Możesz jedynie sprawdzać czy zawiera znaki np. apostrofy, średniki.. lub słowa typu "if" "function" "array", ale mimo to nie widzę sensu, żeby komplikować sobie przez to życie smile.gif
Soker
tak o to mi chodzi, jak to nie widzisz sensu questionmark.gif przykładowo użytkownik zakłada konto i przypadkowo wcisną mu się przycisk ";", nie sprawdzając tego klika wyślij i poszło, usunęło ten znak i od razu nick czy też hasło jest inne niż użytkownik chciał. Nie mogąc się zalogować tworzy on następne konto zaśmiecając nam bazę mysql...
Bosslog
Nawet jeśli użytkownik przypadkowo wcisnął inną literkę (nie tylko średnik) i wyśle zamiast "Bartek" - "Bartekl" i też nie będzie mógł się zalogować smile.gif poza tym od tego są funkcje (np. htmlspecialchars), które przed wyświetleniem neutralizują groźny kod, czy to HTML czy JS, oraz funkcje chroniące przed atakami na bazę danych (mysqlowe escape).

Wracają do loginów przy rejestracji. Sam miałem z tym dylemat i doszedłem do wniosku, że najlepiej, gdy użytkownik może używać tylko znaków alfanumerycznych i ewentualnie znaku "_". Jeśli użytkownik wpisze inne znaki, formularz poinformuje go błędem. Sprawdzić to można funkcją np. ctype_alnum smile.gif
Soker
no dobra elegancko przykładowo mam dany kod:

  1. $a = "asfdashb_21";
  2. if(ctype_alnum($a))
  3. {
  4. echo "good";
  5. }
  6. else
  7. {
  8. echo "bad";
  9. }


I powiedzmy że chcę pozwolić na dodanie znaku _ ? próbowałem ctype_alnum($a, '_') ale nie działa tongue.gif
Bosslog
Można to zrobić tak:

  1. $login = 'xyz_21';
  2. $dozwolone = array('_');
  3.  
  4. if(ctype_alnum(str_replace($dozwolone, '', $login)))
  5. echo 'Ok';
  6. else
  7. echo 'Wpisano niedozwolone znaki';


flashdev
  1. if(preg_match('/^[a-z0-9_]+/i', $a))
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.