Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Logowanie + zapamiętanie.
Forum PHP.pl > Forum > Przedszkole
GoldeNx3
Witam. Mam skrypt do rejestracji, logowania i jak mogę zrobić, że jak użytkownik się zaloguje, wyłączy przeglądarkę i włączy to dalej będzie zalogowany?
Fifi209
Takie coś robi się w oparciu o cookie.
GoldeNx3
Cytat(fifi209 @ 1.04.2011, 12:27:40 ) *
Takie coś robi się w oparciu o cookie.



Nakierujesz?
ciekawskiii
ech poszukaj tu na forum albo w google o cookie, tego jest na prawde duzo a nie co dzien to samo pisac
sadistic_son
  1. //przy loogowaniu z zapamietaniem
  2. if(isset($_POST['zapamietaj'])){
  3. setcookie('nazwa','na przyklad nazwa uzytkownika','czas zycia ciasteczka');
  4. }
  5. //sprawdzenie czy zapamietany
  6. if(isset($_COOKIE['nazwa'])){
  7. //zapamietany -> logowanie z nazwa usera
  8. $_SESSION['user'] = $_COOKIE['na przyklad nazwa uzytkownika'];
  9. }
Ot cała filozofia. Oczywście należy sprawdzić czy taki user istnieje jaki jest zapisany w ciachu i w ogole zabezpieczyc ten skrypt pamietajac ze w ciastku moze byc cokolwiek tylko uzytkownik sobie wymarzy.
GoldeNx3
Czyli tutaj mam zastosować ten taki kwadracik co się zaznacza? haha.gif

Mógłbyś bardziej naprowadzić? Bo w tym akurat zielony jestem. ; /
sadistic_son
Nie czaję na co bardziej naprowadzić?
  1. <form action="loguj.php" method="POST" >
  2. <input type="text" name="login" />
  3. <input type="password" name="pass" />
  4. <input type="checkbox" name="zapamietaj" />
  5. <input type="submit" name="loguj" /></form>

loguj.php
  1. if(isset($_POST['loguj']) && !empty($_POST['login']) && !empty($_POST['pass'])){
  2. $login=mysql_real_escape_string($_POST['login']);
  3. $pass=mysql_real_escape_string($_POST['pass']);
  4. $sql="SELECT * FROM tabela WHERE user='$login' AND password='$pass'";
  5. $res=mysql_query($sql);
  6. $num=mysql_num_rows($res);
  7. if($num>0){
  8. $_SESSION['zalogowany']=$login;
  9. if(isset($_POST['zapamietaj'])){
  10. setcookie('nazwa_ciacha',$login,time()+1209600); //ciastko bedzie wazne przez 14 dni
  11. }
  12. }else{ $error='Zle haslo lub nazwa uzytkownika';}
  13. }
Masz gotowca. Potem sprawdzasz tak jak pokazalem wczesniej czy ciacho istnieje i jesli tak to od razu tworzysz sesje. Cala filozofia. Tylko tak jak juz wczesniej wspomnialem... ten skrypt trzeba zabezpieczyc bardziej.

PS. Pisane na poczekaniu, moga byc bledy.
GoldeNx3
Chyba jestem na to zbyt tępy. : /

Wyskakuje mi error, gdy wciskam by zapamiętało:

Kod
Warning: Cannot modify header information - headers already sent by (output started at /home/cskrwawa/public_html/sklep/head.php:9) in /home/cskrwawa/public_html/sklep/login.php on line 46



Mój login.php:

http://wklejto.pl/94358
sadistic_son
Ten error oznacza, że nagłówki zostały już wysłane. Na chłopski rozum masz już coś zwrócone do przeglądarki zanim tworzysz ciacho i zapewne ten kod html jest w head.php. Tak więc to: include "head.php"; przenieś do linijki 10.
GoldeNx3
Niestety to samo:

Kod
Warning: Cannot modify header information - headers already sent by (output started at /home/xxx/public_html/sklep/head.php:9) in /home/xxx/public_html/sklep/login.php on line 46



head.php:

http://wklejto.pl/94361
Kuba707
Może to po prostu BOM na początku pliku? Jeśli używasz notatnika zainstaluj Notepad++ i tam dajesz "Format > Koduj w UTF8 (bez BOM)".
sadistic_son
W pliku login.php między linijke 10 a 11 wciśnij ob_start(); a do np. 85 wrzuć ob_flush();.

@UP: co ma piernik do wiatraka?
GoldeNx3
ob_start(); ma być za include, tak?
sadistic_son
Ma być w miejscu gdzie wysyłanie nagłówków nie będzie już powodować błędów, czyli za wszelkimi session_start, setcookie, header(); itp.
GoldeNx3
@EDIT:

Udało się. Sprawdzanie, czy jest ciacho przerzuciłem do index.php. Dać tam jakieś zabezpieczenie, by tylko raz sprawdzał i logował? Bo teraz sprawdza co wejście w index.php.
sadistic_son
Tak, tylko raz. Robisz cos tego typu:
  1. if(!isset($_SESSION['zalogowany']) && isset($_COOKIE['ciastko'])){
  2. $_SESSION['zalogowany']='costam';
  3. }
Oczywiście musisz sprawdzić jeszcze wartość z ciacha, np. zahashowaną przez md5 nazwę usera czy hasło.
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.