Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PHP JAk zapamiętać login i hasło
smolar22
post 22.10.2009, 22:15:26
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 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
piotrooo89
post 22.10.2009, 22:19:18
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




poczytaj o http://pl.php.net/manual/pl/features.cookies.php


--------------------
Go to the top of the page
+Quote Post
smolar22
post 22.10.2009, 22:24:37
Post #3





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

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


Wiesz nadal nie wiem jak to w realu zrobić.
Chodzi o to, gdzie zarejestrować zmienną ?
I jak zrobic aby nie wygasła bo z tego co czytałem to cookie ma jakis tam czas.
Czyli jak na stronie forum php jest opcja" pamietja logowanie" oznacza to ze ta zmienna wygasnie ?
I jak to ma byc w sensie jak to zapisac w html ?
I jak np wyłączyc ? jesli klikniemy na wyloguj .
Go to the top of the page
+Quote Post
marcio
post 22.10.2009, 22:33:48
Post #4





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat(smolar22 @ 22.10.2009, 23:24:37 ) *
Wiesz nadal nie wiem jak to w realu zrobić.
Chodzi o to, gdzie zarejestrować zmienną ?
I jak zrobic aby nie wygasła bo z tego co czytałem to cookie ma jakis tam czas.
Czyli jak na stronie forum php jest opcja" pamietja logowanie" oznacza to ze ta zmienna wygasnie ?
I jak to ma byc w sensie jak to zapisac w html ?
I jak np wyłączyc ? jesli klikniemy na wyloguj .


Przy logowaniu dodajesz checkbox'a jesli jest zaznaczony oprocz ustawienia zmienncyh sesyjnych ustawiasz tez coookies z jakims tam expire np 2 tygodnie.


Przy kazdym wejsciem na strone sprawdzasz czy wyslano cookie z loginem i haslem(haslo w cookie powinno byc zashaszwane by osoby 3 nie mogly go odczytac korzystajac z tego samego kompa)

jesli wyslalo cookie w zapytaniu zamiast robic:

  1.  
  2. SELECT * FROM users WHERE login = "''.mysql_real_escape_string($_POST['login']).'" AND haslo = "'.'mysql_real_escape_string(md5($_POST['haslo'])).'" LIMIT 1
  3.  


Robisz:

  1.  
  2. SELECT * FROM users WHERE login = "''mysql_real_escape_string($_COOKIE['login'])'" AND haslo = "''mysql_real_escape_string($_COOKIE['haslo'])'" LIMIT 1
  3.  


I tyle taki ooglny zarys i jak najlatwiej to zrobic.




Cytat
I jak np wyłączyc ? jesli klikniemy na wyloguj .


Wysylasz takie same cookie tyle ze puste i z tym samym ujemnym czasem.



--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Crozin
post 23.10.2009, 15:30:25
Post #5





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

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

 



RSS Wersja Lo-Fi Aktualny czas: 5.05.2025 - 07:14