Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Poprawność , bezpieczeństwo zapytania
Forum PHP.pl > Forum > Przedszkole
Ulysess
mam 2 pytanka..

1 . ponizej mam zapytanie dodające dane do bazy i.. czy jest jakaś różnica w zapytaniach jakie dam 'ciapki' questionmark.gif np że dla stringów inaczej a dla INT inaczej . Dodatkowo czy w zapytaniu select jak dam WHERE `pole` = 0 jest różnica między WHERE `pole` = '0' questionmark.gif dodam tylko że `pole` jest INTem.
  1. $wykonano_zapytanie['a'] = mysql_query("INSERT INTO `tabela` (`a`,`b`,`c`,`d`,`e`) VALUES ('".mysql_real_escape_string(0)."','".mysql_real_escape_string($typ)."','".mysql_real_escape_string($pid)."','".mysql_real_escape_string(0)."','".mysql_real_escape_string($iduser)."')") or die(mysql_error());


2. jakiej funkcji najbezpieczniej używać aby na czacie wpisując np <span>tekst</span> lub jakiś kod php nie wykonał się tylko wydrukowało to co się wprowadziło.
z góry dziękuje
PanGuzol
1. Jak pole jest INT to lepiej nie dawać wartości w apostrofy. Jeśli jest w apostrofach to traktuje jako string i musi zrobić konwersję.
2. htmlspecialchars
Ulysess
1) konwertacja = dłuższy czas wykonywania zapytania questionmark.gif
2) używam htmlspecialchars ale czy to na pewno bezpieczna metoda ?

i jeszcze jedno.. jeżeli zmienna przechodzi przez funkcje ABS to niezależnie czy pochodzi z formularza , obliczeń muszę używać mysql_real_escape_string questionmark.gif
nospor
1) Jak cos jest INTem to ma to byc wkladane jako INT. Koniec kropka. Wkladacie w ciapkach od początku i się uczycie złych nawyków.
Przed wlozeniem takiego inta, zrzutuj sobie daną zmienną do inta dla pewnosci i po sprawie
$pid = (int)$pid;

2) jak powiedziano htmlspiecialchars(). Ale to przed wyswietleniem a nie przy wkladaniu do bazy,
Ulysess
1.czyli jeśli zmienna jest typu INT to nie muszę dawać mysql_real_escape_string ?
2. w zmiennej pochodzącej z formularza jest treść wiadomości , przy zapisie nie muszę tego w żaden sposób filtrować tylko przy wyświetleniu używać htmlspecialchars questionmark.gif
nospor
1) Tylko pod warunkiem ze zrzutujesz ją wpierw na inta tak jak ci napisalem
2) W najprostrzej postaci tak. Ale filtrowanie jakies wstepne zawsze moze byc- wszystko zalezec bedzie od Twoich potrzeb. Jesli z zalozenia, nie bedziesz pozwalal na zadne tagi html, to rob od razu strip_tags.
Ulysess
a czy zamiast funkcji INT nie wystarczy funkcja ABS ?
używając INT max wartość to ~2,1mld a ja niejedno krotnie operuje na większych liczbach dodatkowo musi być dodatnie no i oczywiście używam funkcji CEIL do zaokrąglania tylko czy to odpowiednia metoda ?
nospor
abs sluzy do wartosci bewzględnej. Jak nie chcesz przyjmować liczb ujemnych to mozesz uzywac abs.
Jak ci INT za malo, to sprawdzaj po prostu przy pomocy is_numeric() i jak cos nie jest liczbą numeryczną to wal bledem
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.