![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 14.01.2017 Ostrzeżenie: (0%) ![]() ![]() |
Witam Ponownie
Mam jeszcze jeden problem. Nie wiem jak powinienem prawidłowo zapisać co poniżej. Chciałbym usuwać z bazy konkretny rekord i konkretną kolumnę jednak usuwa mi zawsze ostatnią. Wiem że problem leży w $SESSION bo zawsze ma w pamięci ostatnią wartość, ale nie potrafię napisać tego inaczej.
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Usuwa ostatni, bo w pętli wciąż nadpisujesz zmienną sesyjną (więc ta przyjmuje ostatnią wartość id).
Zamiast tego formularza wstaw tam link index.php?action=usun_kamere&id=id_kamery (zmienne będą w $_GET nie $_POST). |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 14.01.2017 Ostrzeżenie: (0%) ![]() ![]() |
Wielkie dzięki.
Działa (IMG:style_emoticons/default/smile.gif) Dla potomnych poprawiony kod
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jesteś narażony na ataki SQL injection przy tym kodzie. I raczej nie powinno być sytuacji że dropujesz kolumnę. Masz raczej coś nie tak z logiką tej aplikacji.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 14.01.2017 Ostrzeżenie: (0%) ![]() ![]() |
Logika jest OK.
Przy dodawaniu kamery dodaję kolumnę w bazie użytkowników, którym z góry nie daje uprawnień. Przy usuwaniu kamery usuwam również zbędną już kolumną dotyczącą danej kamery. To jest tymczasowe nie mogłem sobie poradzić z osiągnięciem celu, więc by nie wertować między plikami pisałem wszystko w jednym. Docelowo mam klasy użytkowników i będzie to podpięte pod klasę, która zapobiega takim atakom. kod tej klasy
Popraw mnie jeśli się mylę, ale powinno być wówczas OK. Jestem początkujący, dopiero się uczę, mam nadzieję, że szybko i każdy komentarz jest mile widziany Ten post edytował topcio 15.01.2017, 11:22:38 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Nie jest ok bo po pierwsze http://php.net/manual/en/security.magicquotes.php. po drugie żeby quotwanie działało musi być prawidłowo encoding. A od takich rzeczy masz prepare bez żadnego rozszerzania kodem sprzed10 lat.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 14.01.2017 Ostrzeżenie: (0%) ![]() ![]() |
No to mnie załamałeś, bo 2 miesiące pisania całego kodu w tył.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Czegoś się chociaż nauczysz (IMG:style_emoticons/default/smile.gif)
I nie zdawaj się na taką dowolność. htmlspecialchars przy takim użyciu będzie dawał losowe rezultaty na różnych wersjach PHP: Cytat If omitted, the default value of the encoding varies depending on the PHP version in use. In PHP 5.6 and later, the default_charset configuration option is used as the default value. PHP 5.4 and 5.5 will use UTF-8 as the default. Earlier versions of PHP use ISO-8859-1.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 14.01.2017 Ostrzeżenie: (0%) ![]() ![]() |
Czy to oznacza, tak na szybko czytając, że cały kod powinienem przerobić na wersję PDO (IMG:style_emoticons/default/questionmark.gif)
Czy nie do końca rozumiem i mieszam pojęcia. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Znaczy to, że w zależności od wersji php jest zupełnie inna wartość encoding. Domyślnie jest też html4.01.
Nie powinieneś też modyfikować danych oryginalnych bo później będziesz miał problem przy modyfikacjach. Powinny być zabezpieczone podczas wyświetlania - XSS. Ten post edytował viking 15.01.2017, 12:20:38 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 14.01.2017 Ostrzeżenie: (0%) ![]() ![]() |
Moja wersja PHP
Wersja PHP: 5.6.29-pl0-gentoo a kodowanie php utf-8 Kodowanie znaków serwera: UTF-8 Unicode (utf8) charset strony również ustawiony na utf-8 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tu nie chodzi o to, jaką masz wersję obecnie. Tylko że ty jako programista musisz pisać kod tak, żeby nie był podatny na losowosc.
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 14.01.2017 Ostrzeżenie: (0%) ![]() ![]() |
Testowo wykonałem podczas logowania do strony zamiast user name, oraz już po zalogowaniu we wszystkich dostępnych formularzach
Nie usunęło. Znalazłem za to błąd, którego nie umiem ominąć. W tej linii
Wszystko jest OK, dopóki w nazwie nie ma spacji, jeśli natomiast dodam kamerę "Kamera 1", link generuje się tylko jako "Kamera" Co można z tym zrobić? Ok już sobie poradziłem funkcją str_replace |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Zawsze tworząc urle powinieneś używać http://php.net/manual/en/function.urlencode.php
A teraz w swoim zapytaniu podstaw w urlu pod kam_id=1 or 1=1 (nie rób tego na produkcji). Skasuje ci wszystkie rekordy w tabeli. |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 14.01.2017 Ostrzeżenie: (0%) ![]() ![]() |
Po wpisaniu
index.php?action=usun_kamere_action&kam_id=1 or 1=1 Nic się nie dzieje z tablicami poza tym, że usunęło kam_id=1 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 00:50 |