![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 17.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Moje pytanie jest z natury jak się to poprawnie (zgodnie ze standardami, wymogami bezpieczeństwa itp.) powinno robić. Mam panel użytkownika w którym user za pomocą odnośnika może skasować sobie dodane wcześniej zdjęcie (z serwera jak i rekord w bazie danych). Czy dobrym rozwiązaniem będzie zaopatrzyć odnośnik w onClick="return funkcja_usuwajaca_zdjecie()" (czyli, czy te rozwiązanie jest dobre?) ? Dodatkowo chciałbym aby po usunięciu zdjęcia i przeniesieniu go na stronę główną wyświetlała się notka 'Plik został poprawnie usunięty' + po odświeżeniu strony notka znikała. Pomysł taki - nie wiem czy wykonalny - aby przesłać wraz z odnośnikiem zmienną, a następnie po wyświetleniu ów notki usunąć zmienną (niestety nie wiem jak do tego się zabrać - oraz czy jest na to inny, lepszy sposób?). Pozdrawiam i witam wszystkich raz jeszcze, jako nowy użytkownik. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Pomyślmy.. W sesji przechowujesz id użytkownika. W momencie gdy chce on zdjęcie usunąć linkiem jako parametr rzucamy do zmiennej GET id_fotki czy inny identyfikujący ją wskaźnik. Sprawdzamy, czy taka fotka jest w bazie i dodał ją ten user (bo chyba zapisujesz kto dodał daną fotografię w bazie, a przynajmniej id tego usera?). Jeśli wszystko jest ok, możesz usuwać. No i nieco przerób skrypt, by admina pod kątem praw nie sprawdzało
![]()
EdIT: O co mi chodzi ze sprawdzeniem powodzenia usuwania zdjęcia z bazy? Może dojść do sytuacji, że w bazie wpis o zdjęciu zostanie, ale zostanie zdjęcie usunięte fizycznie z serwera. lub na odwrót. Zdjęcie zostanie, choć baza będzie wskazywać, że zostało usunięte. I tak źle i tak niedobrze. Stąd uzależnienie kasowanie zdjęcia z dysku w sytuacji gdy już zostało ono wywalone z bazy, jest znacznie bezpieczniejszym rozwiązaniem. Choć z dwojga złego lepiej jeśli ono jest na dysku serwera, nawet jeśli baza o nim nie wie, niż na odwrót ![]() A co do komunikatów to możesz także posłużyć się zmienną sesyjną ![]()
Powód edycji: [thek]: Małe wyjaśnienie
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 17.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za pomoc, jednak stoję jeszcze w jednym punkcie, a mianowicie:
Do sesji wysyłasz sobie komunikaty w jakiejś określonej postaci W chwili kliknięcia na odnośnik powinienem do zmiennej sesyjnej dodać ten komunikat, jednak zupełnie nie wiem jak to zrobić. Potrzebuję coś w stylu: if(wciśnięto_odnośnik() ) { $_SESSION['komunikat'] = 'zdjęcie zostało usunięte'; } A już na stronie głównej wyczyszczenie $_SESSION['komunikat'] tuż po wyświetleniu komunikatu. Pozdrawiam. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
W momencie gdy masz jakiś komunikat dodać - ustaw zmienną. Przykład? Ciut wyższy kod jaki podałem
![]() Przy czym osobiście nieco inaczej sprawę rozwiązuję niż zasugerowałeś. U mnie komunikaty są tablicą. Czemu? Bo mogę chcieć wysłać nie jeden ale kilka komunikatów, niekoniecznie oznaczających błędy(!). Zamiast więc ustawiać tylko jeden, mogę wysłać tablicę całą, z których tylko 1 będzie błędem, 3 jakimiś informacjami, a 2 to komunikaty powodzenia. Wygodniej wtedy mieć: $_SESSION['komunikaty'][] = array('typ' => 'wybrany typ', 'komunikat' => 'Jakiś komunikat'); Gdzie 'wybrany_typ' to u mnie: 'err', 'ok' lub 'inf' co implikuje mi 3 klasy w CSS, które ładnie mi je wyróżniają. A odczyt? W określonym miejscu kodu coś w stylu: Popatrz... Może coś podobnego Ci się przyda po przeróbkach. -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 17.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
A np. rozsądnym byłoby w przypadku naciśnięcia odnośnika uruchomić funkcję (za pomocą onclicka) usuwającą zdjęcie + w przypadku dobrze wykonanej czynności przesłać do mysql'a komunikat, że wszystko ok i następnie odczytujemy go na stronie (a po odczycie kasacja wpisu)? Nie musielibyśmy wtedy angażować $_GET'a.
Może inaczej: Jak to robi photobucket.com, że usuwamy zdjęcie -> przechodzimy do nowej strony bez $_GETa -> pojawia się komunikat a po refreshu znika. Albo choćby bliższa nam nasza klasa, prawie ta sama akcja -> po potwierdzeniu chęci usunięcia zdjęcia (tutaj naszym przyciskiem jest już przycisk formularza) przenosi nas na główną stronę albumu -> notka o kasacji -> refresh i informacja znika ![]() ![]() Wybacz/wybaczcie upierdliwość i pozdrawiam. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Nie korzystam z żadnego z wymienionych serwisów więc zgaduję, że po drodze jest użyty AJAX. I tam też jest na bank GET, tylko nie widać go jawnie, lub całość jest ujęta w formularz, czyli dane typu POST.
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 07:40 |