![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 5 Dołączył: 14.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Da się jakoś w PHP zablokować wywołanie danej funkcji jako parametr innej funkcji? Na przykład jeśli mam taki kod:
To powinien on zwrócić błąd bo funkcja janusz() ma być niemożliwa do wywołania jako parametr innej funkcji. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Mozesz pobawic sie tym
http://php.net/manual/en/function.debug-backtrace.php ale osobiscie nie widze wiekszego sensu. Napisz moze co kombinujesz. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 5 Dołączył: 14.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Mozesz pobawic sie tym http://php.net/manual/en/function.debug-backtrace.php ale osobiscie nie widze wiekszego sensu. Napisz moze co kombinujesz. Napisałem sobie klasę a w niej mam metodę admin($id), która daje admina użytkownikowi o podanym ID (wysyła do bazy danych zapytanie "UPDATE `users` SET `admin` = true WHERE `id` = $id"). W tej klasie mam też metodę username($id, $username), która zmienia nazwę użytkownika o podanym ID na $username (wysyła do bazy danych zapytanie "UPDATE `users` SET `username` = $username WHERE `id` = $id"). I teraz jeśli zrobię username(4, admin(4)) to jednocześnie zmieni użytkownikowi nazwę na null i da mu admina. Metodę username() będę wywoływał przy formularzu służącym do zmiany nazwy użytkownika (więc parametr $username jest odczytywany z pola formularza). Obawiałem się, że jakiś pro elo hacker wpisze sobie w pole formularza "admin(i tu swoje ID) i dostanie admina. Jednak z tego co widzę to chyba pola formularza zawsze są czytane jako string, i nie da rady wywołać funkcji formularzem, nie? Chyba jakiegoś chwilowego zaćmienia umysłu dostałem, od kilku dni bez przerwy klepię kod jedynie z przerwami na spanie i jedzenie ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Tak, zdecydowanie powinienies sie przespac....
![]() Pola forma ida jako string a nie jako funkcje. Poza tym po cos ludzie wymyslili walidacje ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
A nawet jeśli by to przeszło to naprawdę nie masz tam żadnego systemu uprawnień który by sprawdził czy user = admin i wtedy może to wywołać?
-------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 5 Dołączył: 14.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
A nawet jeśli by to przeszło to naprawdę nie masz tam żadnego systemu uprawnień który by sprawdził czy user = admin i wtedy może to wywołać? Nie mam. Będę weryfikował przed wywołaniem tej metody czy użytkownik ma odpowiednie uprawnienia. Planowałem mniej więcej coś takiego (to będzie się działo po wysłaniu formularza):
userInfo() to metoda pobierająca z bazy danych informacje o danym użytkowniku i zwracająca je w postaci tablicy asocjacyjnej. $user['admin'] może mieć wartość true lub false. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 07:05 |