thek
19.02.2010, 14:28:11
Pisze sobie kulturalnie PA i testuję pod różnymi przeglądarkami. Fajnie pięknię, IE6 jak zwykle kaleczy CSS, ale rozwalił mnie w pewnym momencie szef, który woła, że ma błąd. Patrzę a tu w polach hasło i adres www dane jakich na bank nie ustawiałem. Sprawdzam w kod - lipa bo nawet kod pokazuje, ze wszystko jest zerowane w value. W końcu po jakoś godzinie dociekań zauważyłem, że problem jest szerszy i dotyczy oprócz IE także Chrome z włączonym Autouzupełnianiem i zapamiętywaniem haseł. Przeglądarki te w momencie gdy napotykają na input o typie password na chama wrzucają tam hasło przypisane dla danej strony/domeny, a do pola input tuż przed nim wrzucają login. Jeśli nie mogą (tak ja miałem) bo pole jest zablokowane, to wrzucają login w pole input przed zablokowanym. Na pewno nie jest problemem nazewnictwo. Pola logowania do serwisu mają zupełnie inne nazwy niż ten inny formularz, który mi się magicznie uzupełnia. Na bank jest to przypadłość typu password. Zmiana go na text powoduje, że problem znika. Przypadłości tej nie posiada Firefox ani Opera z tego co zauważyłem, ale one u mnie domyślnie mają wyłączone zapamiętywanie haseł, więc problem może tyczyć także nich. Polecam sobie przetestować, bo mnie ten "dodatek" i "ułatwienie" stosowane przez przeglądarkę wnerwiło. Nie tylko straciłem czas na dociekania czemu tak działa, to jeszcze wśród userów może to zrobić niezłe zamieszanie w panelach zmiany haseł choćby. Najgorsze jest to, że my jako webmasterzy nie mamy na to kompletnie wpływu. A u mnie to powoduje choćby próbę nadpisania jednego z pól wartością wziętą przez przegladarkę z powietrza. Jeśli to pole będzie puste, to przy przechodzeniu walidacji może przemknąć niezauważenie gdy jest także typu tekstowego to powyżej pola z hasłem i user nie zauważy, że coś jest nie tak. U mnie wywaliło by błąd bo mam tam walidację adresu www i adres mail w nim by zakończył się komunikatem. Tylko co jeśli ktoś napisał stronę i takiego "szczęścia" nie ma?
darko
19.02.2010, 15:10:23
Nie sprawdzałem tej metody, ale gdzieś kiedyś znalazłem taki mały trik, mianowicie doklejasz do nazwy i/lub ID inputa losowa generowaną liczbę i przesyłasz ją dalej w hiddenie. Nazwa i/lub id elementu będzie w tym przypadku się zmieniać po każdym wejściu na stronę lub odświeżeniu strony w przeglądarce, co powinno rozwiązać powyższy problem, ale trzeba to sprawdzić. Pozdrawiam.
// edit
można też spróbować zastosować tę technikę dla atrybutów name i id samego formularza.
thek
25.02.2010, 12:12:35
Darko... Problem nie jest związany z danymi POST wcale i przeładowaniem formularza. Po zalogowaniu wszystko jest cacy, łazisz po stronie ile chcesz, przeglądasz linki, w pewnym momencie przechodzisz na jakąś stronę w ramach tej domeny, gdzie masz pole typu password lub ogólnie jakiś formularz i.... zonk! Dane masz magicznie same uzupełnione, choć nie chciałeś tego i jest to wręcz niepożądane działanie. Poza tym zaznaczam.. Atrybuty name pomiędzy formularzami logowania i tym dodatkowym są różne. Raz jest to login i password, a innym razem adres_www i haslo :0 Tak więc dzieje się tak ni z gruszki, ni z pietruszki, a jedyne elementy wspólne to typ pola input jako password oraz domena.
Zacząłem ostro majstrować z tym bugiem autouzupełniania i tyczy on wszystkich przeglądarek popularnych, także FF oprócz wspomnianej Opery i IE. Udało mi się go pozbyć ostatecznie, ale nadmieniam, że błąd nie stoi po stronie webmastera. W wyniku testów doszedłem do wniosków takich:
- wstawienie w pole input loginu z danego portalu (nieważne czy jest to pole disabled czy nie) powoduje wstawienie w najbliższym polu typu password Twojego zapamiętanego hasła.
- jeśli pomiędzy tymi dwoma polami występuje puste input to zostanie one wypełnione Twoim loginem.
Aby pozbyć się błędu, jeśli chcesz wyświetlać w celach informacyjnych login, musisz zmienić jego typ na inny niż input (u mnie zadziałał label) i dodatkowo pomiędzy nim i polem typu password nie może się znaleźć jakikolwiek pusty input. Jeśli się pojawi, to przeglądarka sama wpisze do niego login i pole password znów automatycznie wypełni hasłem. Wiem, że to głupota, ale jak widać wszystkie przeglądarki tak mają ustawione zachowanie autouzupełnienia logowania.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.