• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Blokada usunięcia admina

Object Storage Arubacloud
0 głosów
329 wizyt
pytanie zadane 25 maja 2016 w PHP przez Alterwar Dyskutant (7,650 p.)
Witam,

proszę o pomoc w naprowadzeniu mnie na dobry tok rozumowania. Otóż mam tabele z użytkownikami oraz prawami. Jako administrator mogę usunąć wszystkich użytkowników (nawet siebie) - i tu jest problem. Mam napisany kod, i wiem dlaczego tak działa jednak nie potrafię wymyślić lepszego sposobu. Otóż w załączonym pliku jeśli prawo = 1 wtedy nie mogę usunąć nikogo. Jeśli dam prawo =3 wtedy mogę usunąć wszystkich, razem ze mną. Zapewne przez to, że jestem zalogowany jako admin to strona pobiera sobie tylko wartość z id admina, więc nie bierze pod uwagę innych id ( a zarazem praw).

Kod: http://pastebin.com/D3VyrU6m

Jeśli ktoś ma jakiś pomysł, proszę o pomoc. Rozwiązanie zapewne jest banalne, jednak nie mogę na nic wpaść.
komentarz 25 maja 2016 przez Mya Bywalec (2,790 p.)
Przed usuwaniem możesz sprawdzić czy id usuwanego użytkownika nie jest takie samo jak id aktualnie zalogowanego.

2 odpowiedzi

0 głosów
odpowiedź 25 maja 2016 przez Alterwar Dyskutant (7,650 p.)
 
Najlepsza
Błąd znaleziony. Okazało się, że metoda  $prawo = $_GET['Prawo'];przesyłała 1 jako '1', więc php odbierał to chyba jako string. Usunięcie ' ' z buttonu value pomogło.
0 głosów
odpowiedź 25 maja 2016 przez CzikaCarry Szeryf (75,340 p.)
edycja 25 maja 2016 przez CzikaCarry

No to tak: modyfikujesz twoje zapytanie tak, aby sprawdzało przy okazji, czy użytkownik ma większe prawa niż np 1, 2 czy 3, jak tam wolisz. Czyli:

   $zapytanie = "DELETE FROM `".$prefix."Uzytkownicy` WHERE ID =".$id."";

zmieniasz na np:

   $zapytanie = "DELETE FROM `".$prefix."Uzytkownicy` WHERE ID =".$id." AND prawa<3";

 

komentarz 25 maja 2016 przez Alterwar Dyskutant (7,650 p.)

Niestety, ale po zmianie zapytania dalej to samo. Zapytanie zmodyfikowałem na ten kod:

$zapytanie = "DELETE FROM `".$prefix."Uzytkownicy` WHERE ID =".$id." AND ".$prawo." < 3";

Admin się nie usuwa, ale również nie usuwa się użytkownik.

komentarz 25 maja 2016 przez CzikaCarry Szeryf (75,340 p.)
Sorry, nie powinno być <3 ale >3, mój błąd:)
komentarz 25 maja 2016 przez Alterwar Dyskutant (7,650 p.)
Niestety, dalej to samo. Sprawdzałem tym sposobem, jednak brak rezultatów;/
komentarz 25 maja 2016 przez CzikaCarry Szeryf (75,340 p.)
Dlaczego dajesz tam '$prawo'? W tym zapytaniu nie weryfikujesz zmiennej z twojego kodu PHP, ale weryfikujesz dane z kolumny, więc zamiast '$prawo' daj po prostu nazwę kolumny.
komentarz 25 maja 2016 przez Orkoo7 Bywalec (2,670 p.)

A w ten sposób? 

$zapytanie = "DELETE FROM `".$prefix."Uzytkownicy` WHERE ID =".$id." AND ".$prawo<3;

 

komentarz 25 maja 2016 przez Alterwar Dyskutant (7,650 p.)
Dalej nie działa. Z drugiej strony po co dodawać prawo skoro już warunek na początku nam określa co się ma stać.

Podobne pytania

0 głosów
2 odpowiedzi 317 wizyt
pytanie zadane 20 lutego 2018 w PHP przez Janusz Pierzchalski Początkujący (430 p.)
0 głosów
2 odpowiedzi 155 wizyt
0 głosów
0 odpowiedzi 68 wizyt

92,757 zapytań

141,679 odpowiedzi

320,441 komentarzy

62,101 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...