![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 16.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam taki prosty system rejestracji i logowania użytkowników z bazy danych na swojej stronce. Wszystko działa poprawnie. Chciałbym jednak zrobić coś na styl autologowania aby użytkownik za każdym razem nie musiał wpisywać loginu i hasła, a został albo automatycznie zalogowany albo zostało mu już login i haslo wyświetlone, gotowe tylko do zatwierdzenia. Kombinowałem na różne sposoby z setcookie($login, $haslo, time()+9999); if(!isSet($_COOKIE['wyslane']) && !isSet($_POST['wyslane'])){ ale nic mi z tego nie wychodzi :/ Bardzo proszę o pomoc.
Znalazłem na internecie taką pomoc, w podobnej sprawie: do formularza dodałem: <input type="checkbox" name="autologin" value="1"> a do pliku
Po zalogowaniu (przy zaznaczeniu autologowania) - loguje się ok. Naciskam wyloguj. I teraz najważniejsze. Klikam w logowanie i automatycznie mnie loguje,czyli to o co mi chodziło, ale niestety nie jako dany użytkownik, tylko po prostu loguje. Ponawiam prośbę o pomoc... |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 12 Dołączył: 4.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie bardzo wiem, gdzie u Ciebie jest problem. Podrzuć może aktualną wersję pliku, zamiast starą i informację, że gdzieś dodałeś jakiśtam kod.
Za to zauważyłem kilka innych rzeczy: Tak troszkę dziwnie napisałeś ten swój skrypt. Niepotrzebnie wysyłasz dwa zapytania do bazy danych ( jedno ze status=0 i zaraz po nim to samo ze status=1). Nie lepiej wysłać jedno zapytanie i pobrać z wyniku ten status? Zapisujesz w ciastku login i hasło (linia 26). Nie tylko jest to niebezpieczne, ale też zastanawiam się po co to robisz? Przecież masz je zapisane w bazie i nie widzę byś gdzieś to odczytywał później. Wrzucasz też do zapytania sql dane bezpośrednio z $_POST. Dobrze jest użyć mysql_real_escape_string() na danych przesyłanych od użytkownika przed ich wrzuceniem do zapytania. Wrzuć listing aktualnego kodu to może ktoś Ci pomoże. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 16.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam, dzięki za rady AACHI. Ogólnie mój problem polega na tym, że chciałbym aby działało autologowanie. Nie wiem jak to zrobić prawidłowo, Kod który dorzuciłem ten z cookie po prostu skopiowałem. I to działa, niestety nie do końca. Mianowicie pierwszy raz loguje poprawnie, ale nastepnie już loguje ale nie jako dana osoba powiazana z sesją.
Zdaje sobie sprawę że zapisywanie ciasteczka jest niezbyt poprawne z uwagi na niebezpieczeństwo, ale nie mam innego pomysłu... Podsumowując: - logowanie działa, chciałbym jednak, że za każdym razem jak dana osoba wejdzie na stronę będzie automatycznie zalogowana, aż do momentu kiedy naciśnie wyloguj. Na chwile obecną jest zalogowana tylko na czas sesji.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 12 Dołączył: 4.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Ja autologowanie robię tak, że jeśli ktoś zaznaczy podczas logowania, odpowiednią opcję, to zapisuję w bazie id użytkownika, przeglądarkę, czas wygaśnięcia autologowania i jakiś unikalny_ciąg. I ten unikalny ciąg zapisuję u użytkownika w ciastku.
Przy ponownym wejściu użytkownika (niezalogowanego oczywiście), sprawdzam czy istnieje odpowiednie ciastko z danymi. Jeśli istnieje to pobieram z bazy wiersz i sprawdzam czy dane się zgadzają. Jeśli nie wysyłam polecenie wygaśnięcia ciastka. Jeśli tak to ustawiam odpowiednie zmienne sesyjne. Czyli w sumie robię to samo co i Ty próbujesz zrobić. (IMG:style_emoticons/default/smile.gif) Przeanalizowałem pobieżnie Twój kod i chyba znalazłem błąd... Obecnie sprawdzasz czy ciastko "autologin" jest ustawione wyłącznie gdy $_POST['wyslane'] jest ustawione (a więc gdy ktoś skorzysta z formularza). No i jak pisałem... twój kod jest dziwny Powinieneś mieć raczej:
To tak na szybko przerobiłem, bez sprawdzania czy nie ma błędów.... Przeanalizuj mój kod i swój i dokonaj odpowiednich poprawek. Jeszcze raz zaznaczam, że mojego kodu nie uruchamiałem w PHP, więc nie wiem czy nie ma literówek lub innych błędów. Ten post edytował aachi 19.06.2011, 16:15:13 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 04:43 |