Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PHP JAk zapamiętać login i hasło
smolar22
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 22.10.2009

Ostrzeżenie: (0%)
-----


Witam Wszystkich. Jestem nowy na forum i początkujący w PHP. Tworzę stronę gdzie jest rejestracja itp.
Chciałbym dodać przycisk taki jak na tym forum podczas logowania ("zapamiętaj logowanie")
aby nie trzeba było każdego razu podawać hasła i loginu.
Teraz moje pytanei brzmi jak to zrobić ?
Nie znam sie na sesjach ani cookies ale te sesyjne zmienne powodują za jak zamknę przeglądarke i otworzę od nowa to
login i hasło znika i user nie jest zalogowany .
Czyli jest to dobrze dla userów ktorzy nie bedą chcieli pamiętania loginu i hasła.
Czy może ktoś pomóc i napisać jak zapamiętać logowanie. ( moze byc tak samo jak na tym forum lub dowolnie)
Dzieki (IMG:style_emoticons/default/smile.gif)

Podaje kod loginu.
  1. <?
  2. $bad_login=0;
  3. include("funkcje.php");
  4. if ($t=autoryzacja($_POST['login'],md5($_POST['haslo'])) != -1 )
  5. {
  6. $_SESSION['auth'] = 1;
  7. $_SESSION['id'] = $t;
  8. $_SESSION['login'] = $_POST['login'];
  9. $bad_login=1;
  10. header("Location: index.php?bad_login=$bad_login");
  11.  
  12. } else
  13. {
  14. $_SESSION['auth'] = 0;
  15. $_SESSION['id'] = -1;
  16. $_SESSION['login'] = "";
  17. $bad_login=2;
  18.  
  19. header("Location: index.php?bad_login=$bad_login");
  20. }
  21.  
  22. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Nie podawaj w ciastku żadnego hasła (nawet w formie hasha) bo to nadal niesie ze sobą spore niebezpieczeństwo.

Jeżeli przy logowaniu checkbox z "Zapamiętaj mnie" został zaznaczony to:
1) Logujesz użytkownika
2) Generujesz jakiś losowy ciąg znaków (na przykład przy pomocy sha1() oraz uniqid()), który będzie naszym kluczem
3) Do bazy danych do osobnej tabeli zapisujesz: ID użytkownika, klucz oraz ewentualnie dane nagłówka USER_AGENT
4) Ten klucz wraz z ID użytkownika wysyłasz jako ciasteczko (przykładowo: 123_klucz)
5) Przy każdym wejściu na dowolną podstronę sprawdzasz czy użytkownik jest niezalogowany. Jeśli tak sprawdzasz czy istnieje ciasteczko automatycfznego logowania. Jeśli i ono istnieje odczytujez z niego ID użytkownika oraz przypisany do niego klucz
6) Następnie wyszukujesz w tej dodatkowej tabeli rekordu, który by spełniał wszystkie kryteria (tj.: odpowiednie id użytkownika, odpowiedni klucz oraz ewentualnie wspomniany wcześniej nagłówek USER_AGENT)
7) Jeśli istnieje to usuwasz ów wpis z tabeli, logujesz użytkownika o ID z ciasteczka oraz generujesz na nowo nowy klucz, który leci do ciasteczka (chodzi o to by klucze były każdorazowo regenerowane)
8) Ewentualnie przy usuwaniu rekordu możesz nieco rozbudować (w sumie od strony kodu sprowadza się to jego uproszczenia :]) warunek tak by usuwane były wszystkie rekordy danego użytkownika. Uniemożliwi to co prawda posiadanie równoległego automatycznego logowania na dwóch komputerach (czy nawet na dwóch róznych przeglądarkach pod jednym systemem) ale daje dodatkową ochronę. Nawet jeżeli ktoś ukradnie zawartość ciasteczka i odpowiednio zmodyfikuje nagłówek USER_AGENT istnieje szansa, że niedoszła ofiara wcześniej zaloguje się na konto unieważniając skradzione dane.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.04.2026 - 13:00