[PHP] Sesje, a może coś innego?

0

Witam,
Przeczytałem artykuł: http://pl.wikibooks.org/wiki/PHP/Sesje
Dość ładnie opisane jest jak skorzystać z sesji.
Jednak przeglądnełem cookies stron na jakie wchodze i po kilku rekordach wymiękłem. W żadnej z nich nie znalazłem wartosci PHPSESSID, a byłem na nich w tym momencie zalogowany.
Czy to oznacza, żę nie używa sie mechanizmu sesji tylko pisze własny?

Jeżeli tak, to czy mógłby ktoś objaśnić krótko jak taki mechanizm działa?
Pozdrawiam, tMbRaga.

0
	if(isset($_POST['user'])&&(!empty($_POST['user']))&&isset($_POST['password'])&&(!empty($_POST['password']))){
		$sql->sql_query('SELECT * FROM '.$config['baza']['prefix'].'users WHERE login=\''.$sql->sql_escape($_POST['user']).'\' AND active=\'1\';');
		if($rek=$sql->sql_fetch()){
			if($rek['haslo']!=md5($_POST['password'])){
				$content['tytul']='Błędny login lub hasło!';
				$content['tresc']='Sprawdz czy nie podałeś błędnych danych.<br /> Zobacz również czy przycisk Caps Lock nie jest wciśnięty!';
				$sql->sql_query('UPDATE '.$config['baza']['prefix'].'users SET fakelogin=\''.mktime().'\' WHERE id=\''.$rek['id'].'\';');
			} else {
				$content['tytul']='Zalogowano pomyślnie!';
				$content['tresc']='Nazwa: '.$rek['name'].'<br />Ostatnia Wizyta: '.date((!empty($rek['format']) ? $rek['format_daty'] : $cache->get('format_daty')),$rek['lastlogin']).'('.$rek['ip'].')<br />Nieudane logowanie: '.date((strlen($rek['format'])>1 ? $rek['format_daty'] : $cache->get('format_daty')),$rek['fakelogin']);
				$sql->sql_query('UPDATE '.$config['baza']['prefix'].'users SET lastlogin=\''.mktime().'\', ip=\''.$_SERVER['REMOTE_ADDR'].'\' WHERE id=\''.$rek['id'].'\';');
				$szablon->assign('logged',true);
				setcookie('username',base64_encode($rek['name']));
				setcookie('login',base64_encode($rek['login']));
				setcookie('haslo',$rek['haslo']);
				setcookie('ip',base64_encode(md5($_SERVER['REMOTE_ADDR'].'cos'.$_SERVER['HTTP_USER_AGENT')));
			}
		} else {
			$content['tytul']='Błędny login lub hasło!';
			$content['tresc']='Sprawdz czy nie podałeś błędnych danych.<br /> Zobacz również czy przycisk Caps Lock nie jest wciśnięty!';
		}

Masz wycinek kodu jak ja to robie. Inny kod sprawdza czy jesteś zalogowany, czy może to próba włamania.

P.S.
Ale ładna kaszana się z kodem robi.

0

:|

nie, prawdopodobnie zmienili tylko nazwę ciasteczka z PHPSESSID na inne

session_name()
0

Dzięki, lecz co do kodu powyżej mam małe wątpliwości.
Czy instrukcja:

setcookie('haslo',$rek['haslo']);

Jest bepieczna?

Przecież wtedy każdy użytkownik może z łatwością znaleźć hasło, a co do loginu to wystarczy base64_decode i tak oto mamy login i hasło jakiegoś użytkownika.

Czy nie lepiej byłoby porobić skróty md5? Oczywiście nie mówie ze md5 jest bezpieczne bo już można kupić bazy do iluś tam znaków ze skrótami do pewnych ciągów znaków.

0

Spójrz wyżej:
if($rek['haslo']!=md5($_POST['password'])){

Czyli w $rek['haslo'] masz już wersję zahashowaną.

0

Faktycznie, racja.
Jednak nadal hasło trzymane jest po stronie klienta. Może nie samo hasło, bo nie ma skryptu, który by na podstawie hashu zrobił hasło, ale jak wspomniałem są już bazy ze skrótami.

Hmm, a już mam nawet pomysł na system sesji w oparciu o MySQL gdzie po stronie klienta będzie trzymany identyfikator do pewnego rekordu. Zawsze daje to większe możliwości niż z góry ustalone sesje w PHP.

1 użytkowników online, w tym zalogowanych: 0, gości: 1