GoldeNx3
1.04.2011, 11:26:27
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
1.04.2011, 11:27:40
Takie coś robi się w oparciu o cookie.
GoldeNx3
1.04.2011, 15:22:58
Cytat(fifi209 @ 1.04.2011, 12:27:40 )

Takie coś robi się w oparciu o cookie.
Nakierujesz?
ciekawskiii
1.04.2011, 15:34:10
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.04.2011, 17:32:50
//przy loogowaniu z zapamietaniem
if(isset($_POST['zapamietaj'])){ setcookie('nazwa','na przyklad nazwa uzytkownika','czas zycia ciasteczka'); }
//sprawdzenie czy zapamietany
if(isset($_COOKIE['nazwa'])){ //zapamietany -> logowanie z nazwa usera
$_SESSION['user'] = $_COOKIE['na przyklad nazwa uzytkownika'];
}
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
2.04.2011, 01:28:26
Czyli tutaj mam zastosować ten taki kwadracik co się zaznacza?

Mógłbyś bardziej naprowadzić? Bo w tym akurat zielony jestem. ; /
sadistic_son
2.04.2011, 02:49:08
Nie czaję na co bardziej naprowadzić?
<form action="loguj.php" method="POST" > <input type="text" name="login" /> <input type="password" name="pass" /> <input type="checkbox" name="zapamietaj" />
loguj.php
if(isset($_POST['loguj']) && !empty($_POST['login']) && !empty($_POST['pass'])){ $sql="SELECT * FROM tabela WHERE user='$login' AND password='$pass'";
if($num>0){
$_SESSION['zalogowany']=$login;
if(isset($_POST['zapamietaj'])){ setcookie('nazwa_ciacha',$login,time()+1209600
); //ciastko bedzie wazne przez 14 dni }
}else{ $error='Zle haslo lub nazwa uzytkownika';}
}
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
2.04.2011, 18:28:11
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
2.04.2011, 18:37:16
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
2.04.2011, 19:03:50
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
2.04.2011, 19:16:38
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
2.04.2011, 19:29:27
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
2.04.2011, 19:37:00
ob_start(); ma być za include, tak?
sadistic_son
2.04.2011, 19:41:19
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
2.04.2011, 23:30:36
@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
3.04.2011, 18:15:30
Tak, tylko raz. Robisz cos tego typu:
if(!isset($_SESSION['zalogowany']) && isset($_COOKIE['ciastko'])){ $_SESSION['zalogowany']='costam';
}
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.