Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zapętlające się odświeżanie
Forum PHP.pl > Forum > PHP
SEM
Witam
Mam problem z tym fragmentem kodu ogólnie wszystko działa. Rekord zostaje poprawnie usunięty, jednak nie wiem czemu ale strona zaczyna odświerzać się w nieskończoność. Próbowałem dodawać dodatkowe warunki w IF-ie, poźniej dodałem unset jednak po wykonaniu tego IFa strona nadal się zapętla. Byłbym wdzięczny za jakąs podpowiedz albo wytknięcie błedu.

  1. if(isset($_GET['edit'])) {
  2. mysql_query("DELETE FROM users WHERE id = ".$_GET['edit']."");
  3. unset($_GET['edit']);
  4. echo '<meta http-equiv="Refresh" content="0" />';
  5. }


Pozdrawiam
WebCM
Usuń 3 i 4 linijkę. W tym miejscu wyślij nagłówek, który przekieruje na właściwą stronę:
  1. header('Location: index.php');
W linii 2 nie zabezpieczasz zapytania przed atakiem SQL Injection. Zmienna $_GET['edit'] może zawierać wszystko, np. 1 OR 1=1 w wyniku czego zapytanie może przyjąć postać:
  1. DELETE FROM users WHERE id = 1 OR 1=1
Użyj mysql_real_escape_string albo mechanizmu podpinania dostępnego w bibliotekach MySQLi i PDO.
SEM
Dzięki działa biggrin.gif

Co do zabezpieczenia to wiem o tym, ale tą zmienna tworzę wyciągając dane użytkownika z bazy danych (robię panel administracyjny). Więc nie ma tutaj żadnego pola tekstowego, czy w takim przypadku też to należy zabezpieczyć?
  1. <a href=\"panel.php?edit={$r['id']}\">Usuń</a>
WebCM
Nigdy nie ufaj danym pochodzącym z zewnątrz. Równie dobrze można wpisać ten adres bezpośrednio do pola adresu. Jest jeszcze możliwy inny atak:
  1. <img src="panel.php?edit=1 OR 1=1">
Albo specjalnie przygotowana strona, która będzie wykonywać różne akcje (dodaj, usuń, edytuj) w twoim serwisie. Poczytaj na forum o sposobach zabezpieczenia przed atakiem CSRF.
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.