Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Filtrowanie wszystkich zmiennych
adi456
post 5.11.2014, 11:30:36
Post #1





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

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


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ć?
Go to the top of the page
+Quote Post
Turson
post 5.11.2014, 11:48:43
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


rekurencja
Go to the top of the page
+Quote Post
adi456
post 5.11.2014, 12:00:41
Post #3





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

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


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
Go to the top of the page
+Quote Post
Turson
post 5.11.2014, 12:07:43
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


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.
Go to the top of the page
+Quote Post
adi456
post 5.11.2014, 12:26:26
Post #5





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

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


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);
Go to the top of the page
+Quote Post
Turson
post 5.11.2014, 12:31:59
Post #6





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Albo:
  1. array_walk_recursive($array, function (&$value) {
  2. $value = mysqli_real_escape_string($_SESSION['mysqli'], $value);
  3. });
Go to the top of the page
+Quote Post
adi456
post 5.11.2014, 12:57:34
Post #7





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

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


  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?
Go to the top of the page
+Quote Post
Turson
post 5.11.2014, 13:05:01
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Tyle. Z reszta sprawdz
Go to the top of the page
+Quote Post
adi456
post 5.11.2014, 13:51:07
Post #9





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

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


dziękuje Turson
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.07.2025 - 22:53