1)
Logowanie (wyciąłem stąd wszystkie niepotrzebne rzeczy), przed wysłaniem formularza hasło jest dodatkowo hashowane.
<?php if ( ($r1 = $mysql->sql_query($q1)) ) { if ( !$mysql->sql_numrows($r1) ) { //brak uzytkownika w bazie } else { while ( $row = $mysql->sql_fetchrow($r1) ) { { if ( $row['badlogin'] < 3 and ( !$error ) ) { //ustanowienie sesji, dodanie informacji o logowaniu i inne } } } } } ?>
W sesji m.i. ustanawiam zmienną login i id ($_SESSION['login'] oczywiście

2)
Używam AJAX'a i jedynym sposobem na razie który znalazłem na przekazanie sesji to:
<?php if ( @$_COOKIE['PHPSESSID'] ) { } ?>
Nie wiem na ile jest to bezpieczne. Jedyne co wiem to to, że ciasteczko nie jest zapisywane do pliku i zdaję się że jest przechowywane w pamięci (jednak nie wiem jak to wszystko działa i nie wiem na ile można temu ufać).
3)
<?php $q = "UPDATE user SET pass = '".md5(sha1($_POST['haslo2']))."' WHERE login = '".$_SESSION['login']."'; "; ?>
To jest zapytania z pliku AJAX'owego więc jeśli da się podszyć pod tamte ciasteczko to także dowolna osoba będzie mogła komuś zmienić hasło (?)
Tutaj tak jak wcześniej hasło jest hashowane dodatkowo przed wysłaniem.
Do wszystkiego dodam że użytkownik ma unikalny login (ale to raczej rzecz oczywista). I jak już wcześniej przeczytałem, a również i zauważyłem hasło może składać się z dowolnych znaków, ponieważ i tak jest hashowane.
To by było na tyle z moich pytań. Z góry dziękuję za odpowiedź i krytykę.