Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Filtrowanie wszystkich zmiennych
Forum PHP.pl > Forum > Przedszkole
adi456
Witam, tak sobie myślałem żeby w starych aplikacjach filtrować wszystkie zmienne

poczytałe i rozkminiłem coś takiego
  1. foreach($_POST as $key => $value) {
  2. $_POST[$key] = mysqli_real_escape_string($mysqli, $value);
  3. }
  4. foreach($_GET as $key => $value) {
  5. $_GET[$key] = mysqli_real_escape_string($mysqli, $value);
  6. }


no i niby było by ok, tylko problem jest jak trafiają się post czy get wielowymiarowe, ma ktoś pomysł jak to rozwiązać?
Turson
rekurencja
adi456
ok chwilowo zrobiłem tak:

  1. foreach($_POST as $key => $value)
  2. {
  3. if(!is_array($_POST[$key])) {
  4. $_POST[$key] = mysqli_real_escape_string($_SESSION['mysqli'], $value);
  5. echo 'POST: '.$key.'='.$value.' / '.mysqli_real_escape_string($_SESSION['mysqli'], $value).'<br>';
  6. }
  7. }
  8. foreach($_GET as $key => $value)
  9. {
  10. if(!is_array($_GET[$key])) {
  11. $_GET[$key] = mysqli_real_escape_string($_SESSION['mysqli'], $value);
  12. echo 'GET: '.$key.'='.$value.' / '.mysqli_real_escape_string($_SESSION['mysqli'], $value).'<br>';
  13. }
  14. }


w zasadzie jest ok tyle że to nie rozwiązanie problemu tylko jego obejście, nie rozumiem co z tym ma wspólnego rekurencja
Turson
Rekurencja ma tyle z tym wspólnego, że powinieneś napisać funkcję filtrującą tablicę, gdzie bez znaczenia jest ile ma zagłębień. Tam używasz rekurencji.
adi456
nie bardzo wiem jak zabrać się za taką funkcje, pomoże ktoś?

  1. function filtruj($post) {
  2. foreach($post as $key => $value) {
  3. if(!is_array($_POST[$key])) {
  4. $_POST[$key] = mysqli_real_escape_string($_SESSION['mysqli'], $value);
  5. } else {
  6. // questionmark.gif
  7. }
  8. }
  9. }
  10. filtruj($_POST);
Turson
Albo:
  1. array_walk_recursive($array, function (&$value) {
  2. $value = mysqli_real_escape_string($_SESSION['mysqli'], $value);
  3. });
adi456
  1. array_walk_recursive($_POST, function (&$value) {
  2. $value = mysqli_real_escape_string($_SESSION['mysqli'], $value);
  3. });


naprawde tylko tyle trzeba żeby przefiltrować wszystkie POST bez względu czy to tablica czy nie?
Turson
Tyle. Z reszta sprawdz
adi456
dziękuje Turson
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.