9 maja 2010

wyślij wiadomość -> zaloguj się -> napisz wiadomość jeszcze raz

Kiedyś, przez jakiś czas pracowałem jako tajemniczy klient. Była to dość ciekawa i całkiem wygodna praca dla studenta. Po każdym audycie musiałem wypełnić odpowiednią ankietę na stronie internetowej, albo raczej przepisać tam swoje notatki wykonane zaraz po wizycie. Po każdej wizycie musiałem zatem logować się na stosowną stronę i wypełniać dość długi formularz. Potrafiło to trwać nawet 15-20 minut. Problem z jakim spotykali się moi koledzy polegał na tym, że bez przeładowań strony użytkownik był automatycznie wylogowywany. W momencie w którym oni próbowali wysyłać starannie wypełniony formularz klikając na przycisk potwierdzający, strona przenosiła ich na ekran logowania. Gdy się ponownie logowali, wracali do pustego (sic!) formularza i musieli wypełniać wszystko od nowa. Jest jednak prosty sposób, żeby sobie radzić z takimi sytuacjami.



Moi znajomi próbowali w różny sposób wybrnąć z takich opresji. Najpierw przygotowywali wszystko na boku a następnie urządzali sobie wyścig z czasem. Logowali się i próbowali wszystko wkleić i wysłać w ciągu tych 10 minut.

Problem który wam przedstawiłem można opisać także wieloma innymi scenariuszami. Najczęściej jednak sprowadza się on do tego, że w danym momencie albo niespodziewanie tracimy sesję, albo podczas jej ponownego pozyskiwania strona przekierowuje nas na taką, która nie posiada wcześniej wprowadzonych przez nas zmian.

czyli jeżeli ktoś nie wie jak sobie z tym radzić to: wrrrrrrrrr i grrrrrrrrrrrr...

Co można zrobić w takiej sytuacji? Sposobów jest kilka.

Jeżeli np. podczas wysyłania posta na forum strona/przeglądarka zwróciła nam jakiś błąd i domyślamy się, że nasze zmiany nie zostały wysłane nie powinniśmy absolutnie wpisywać adresu na nowo i pisać wszystko jeszcze raz. Powinniśmy spróbować po prostu użyć przycisku wstecz. Jest bardzo prawdopodobne, że cofając się wrócimy do strony z napisanym przez nas tekstem. Wówczas możemy albo spróbować wysłać to jeszcze raz (licząc, że to były np. tylko chwilowe problemy serwera) albo po prostu skopiować nasz tekst, po to by wysłać go w chwili gdy będzie już wszystko działać.

No dobra. Wiemy już jak odzyskiwać cenną dla nas treść. Co jednak z przypadkami, gdy nasza sesja w przeglądarce faktycznie kończy się za szybko?

W tym celu musimy zdać sobie dokładnie sprawę z tego, czego potrzebujemy, by osiągnąć końcowy sukces w tej sytuacji. Po prostu potrzebujemy być zalogowani w momencie/na stronie na której oczywiście zalogowani nie jesteśmy. Nie możemy też się ruszyć z tej strony, by się zalogować, bo to zniszczy nasze zmiany.

Sytuacja bez wyjścia? Bynajmniej ;)

Spójrzmy na diagram:



Aby zrozumieć skąd przeglądarka "wie", że obecnie jesteśmy zalogowani, musimy dowiedzieć się coś więcej na temat ciasteczek (cookies). Ciasteczkami nazywane są malutkie pliki zapisywane przez strony internetowe za pośrednictwem przeglądarki na naszym komputerze. Dana witryna ma dostęp tylko do tych ciasteczek, które sama zapisała. Ciasteczka, jak to ciasteczka mają też często swój termin ważności. To właśnie za pomocą tego mechanizmu jesteśmy wylogowywani z różnego rodzaju kont, przy próbie przeładowania strony po upływie danego terminu ważności danego ciasteczka.



Ciasteczkowy potwór ma rację. Powinniśmy zmusić przeglądarkę by zdobyła świeże ciasteczka mówiące o tym że jesteśmy zalogowani. Ważne jest tutaj właśnie to, że mamy zdobyć owe ciasteczka nie za pomocą strony (nie koniecznie dokładnie tej załadowanej w danej zakładce), tylko ogólnie za pomocą całej przeglądarki. Możemy więc to zrobić na drugiej zakładce tego samego okna. Rozwiązanie przedstawia drugi diagram:



Znając te sztuczki możemy sobie zaoszczędzić dużo czasu i stresu. Mam nadzieję, że komuś ta informacja się przydała :)

P.S.
Podziękowania dla ciasteczkowego potwora!
Related Posts Plugin for WordPress, Blogger...

2 komentarze:

  1. Takie proste, że aż genialne, dzięki Stary! Wiele razy byłem bliski wyrzucenia kompa przez okno ze złości.

    A swoją drogą, masz łeb, pomyśl jak zemścić się na durniach którzy pisali te formularze z 10-minutowym timeoutem. Zasługują co najmniej na to, żeby zasypać ich spamem. Ja we wszystkich swoich serwisach robię sesję na sesję - bez limitu czasowego, ważną do zamknięcia okna, w ustawieniach serwera albo wyłączam timeout, albo ustawiam na kilka godzin. Wywalanie po 10 minutach nie służy absolutnie niczemu.

    OdpowiedzUsuń
  2. dzielenie dobre i pożyteczne dzięki

    OdpowiedzUsuń