Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Metoda na usunięcie rekordu z bazy
kaczkazdw
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.09.2012

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


Witam!

Mam proglem nad którym już trochę główkuję i przeszukuje fora w poszukiwaniu satysfakcjonującej mnie odpowiedzi.

Mamy panel administratora np. i są wyświetlone artykuły na stronie w ładnej tabelce. Na końcu każdego wiersza są dostępne możliwe operacje na hiperłączach, edycja i usuwanie. Niech chodzi mi tutaj o samą edycję co o sposób usuwania. Na samym poczatku napisałem skrypt z wykorzystaniem GET który usuwał artykuł po kliknięciu usun w tym samym wierszu. Oczywiście zauważyłem informacje na pasku adresu z końcówką /delete.php?id=9. Postanowiem sprawdzić, czy wpisując inny numer id w adresie usunie mi inny link. Otóż tak się stało. Więc moje pierwsze pytanie brzmi, jak najlepiej się przed tym zabezpieczyć?

Widziałem też wykorzystanie checkboxów do usuwania wybranych rekordów, wtedy można by było zaznaczyć tylko jeden i z głowy. Wszystko fajnie, tylko wymagane jest, by checkbox znajdował się w formularzu? Będzie działało coś takiego, jeśli tabele obejmę w ramy <form ...> </form> i przy każdym wierszu znajdzie się checkbox?
Ktoś może mi podsunąć pomysł, jak ewentualnie poprawnie wykonać coś takiego? Jakoś trzeba podać dalej, który checkbox jest zaznaczony i przydzielony do danego artykulu.


A może macie jakiś lepszy sposób do usuwania rekordu, w przyjemny i pożyteczny sposób? (IMG:style_emoticons/default/wink.gif)

Pozdrawiam.

Ten post edytował kaczkazdw 17.09.2012, 19:26:17
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wNogachSpisz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Każdy user ma kolumnę user_level, od 1 do 5:
1. super admin
2. admin
3. moderator
4. zarejestrowany user
5. gość

Każdy post ma kolumnę author_id, więc post może zostać usunięty tylko przez autora lub przez usera o user_level 1 (superadmin) lub przez admina lub moderatora - w zależności jak skonfigurujesz sobie uprawnienia. Tak to jest zrobione w praktycznie każdym szanującym się softcie.

Metoda POST jest o tyle dobra, że przeglądarka nie będzie cachować zapytań POST, nie zostaną one zapisane w logach serwera www czy zacachowanie przez serwer proxy, także używanie POST do takich operacji jest jedynym wyjściem, upieranie się przy GET obnaża brak profesjonalizmu.

Kolejna sprawa to zabezpieczenia przez CSRF, jeśli rozumiesz jak działa atak CSRF, bez problemu wprowadzisz stosowane zabezpieczenia.
https://www.owasp.org/index.php/Cross-Site_..._Forgery_(CSRF)


P.S
A tak na marginesie, to rekordów z bazy się nie usuwa, tylko zmienia status (IMG:style_emoticons/default/tongue.gif)
Powody są dwa: 1. Jeśli zechcesz odzyskać to co usunąłeś, to leżysz, bo rekordu nie ma 2. Jeśli któregoś dnia zechcesz sporządzić statystykę, np. ile postów napisano w danym okresie czasu, a ile usunięto, to leżysz bo usunąłeś rekord i informacja została utracona.

Ten post edytował wNogachSpisz 18.09.2012, 13:15:49
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 8.10.2025 - 14:34