Witam,
Napiszę Ci dość szybko czym jest logowanie w php i jak przebiega, ponieważ temat logowania był wałkowany i jest bardzo długo, więc sam rozumiesz, że pisać n'ty raz to samo robi się z oporem ( przynajmniej mi ). No ale przejdźmy do rzeczy, zakładam, że pewne podstawy z php znasz takie jak tworzenie warunków, pętli, zmiennych. Jeżeli już masz ten zasób wiedzy, to przejdźmy do napisania samego skryptu logowania.
Na początku tworzymy plik o dowolnej nazwie, u mnie będzie się nazywał
login.php, ten plik umożliwi stworzenie tzw. zmiennej sesyjnej odpowiadającej za zalogowanie się na stronę. O zmiennach sesyjnych możesz poczytać w manualu w dziale zmienne predefiniowane. Oczywiście, samo tworzenie zmiennej sesyjnej nie wystarczy, jest potrzebny też formularz, który umożliwi nam dowolne logowanie.
Przykładowy formularz może wyglądać w ten sposób:
<form method="post" action="login.php"> <input type="text" name="login" /> <input type="password" name="password" /> <input type="submit" value="zaloguj sie" />
Oczywiście ten formularz umieszczamy w naszym pliku, bądź innym wzkazującym na
login.php ( action ). Gdy już mamy w takiej postaci nasz plik, przystępujemy do obrobienia go. Tak więc tworzymy warunek, który nam sprawdzi czy dane przesłane w formularzu są prawidłowe.
<?php
// powyzej badz ponizej przed tym kodem moze byc umieszczony formularz ;)
// najpierw sprawdzamy, czy wysyłane zmienne w formularzu nie są puste.
if ( ! empty( $_POST['login'] ) && ! empty( $_POST['password'] ) ) {
// jezeli nie dokonujemy sprawdzenia poprawnosci loginu i hasla
if ( $_POST['login'] == 'strife' && $_POST['password'] == 'admin' )
{
// tworzymy zmienna sesyjna
$_SESSION['auth'] = '1';
}
else
{
echo 'Podales zly login badz haslo!'; }
}
else
{
echo 'Wprowadz dane do formularza :)'; }
?>
Przy tak skonstruowanym kodzie, i poprawnym wpisaniu danych zostanie dodane zmienna sesyjna o nazwie 'auth'. Zmienne sesyjne są widoczne w każdym miejscu ponieważ ich zasięg jest globalny i tutaj też zapraszam do zapoznania się z manual'em i rozdziałem o zmiennych predefiniowanych.
Następnie posiadając taką zmienną możemy w każdym miejscu sprawdzić, czy użytkownik jest zalogowany, czyli sprawdzamy czy ta zmienna istnieje.
<?php
if ( isset( $_SESSION['auth'] ) ) {
echo 'Wiadomosc dla zalogowanego uzytkownika'; }
?>
Wszystko wydaje, się proste, ale kod który napisałem, może nie działać.. Dlaczego? W kodzie, który zaprezentowałem nie ma nigdzie zdefiniowanego startu sesji, więc tworzenie zmiennych sesyjnych i ich sprawdzanie nie ma najmniejszego sensu. Na początku kodu musi być:
<?php
?>
Wtedy, możemy dowolnie operować na sesjach. Wszystko pięknie, ale czegoś tu brakuje... a co jeśli będziemy chcieli się wylogować, tutaj z pomocą przychodzi
session_destroy" title="Zobacz w manualu PHP" target="_manual, bądź
unset" title="Zobacz w manualu PHP" target="_manual, z tą różnicą, że to pierwsze usunie wszystkie zmienne sesyjne, a drugie tylko wybraną:
<?php
unset( $_SESSION['auth'] ); ?>
To by było Tyle, jeżeli chodzi o samo logowanie, teraz trochę o mysql. Posłużę się do tego kodem, który już wcześniej napisałem na tym forum:
<?php
$query = mysql_query("SELECT * FROM uzytkownicy WHERE `user` = '" . $_POST['user'] . "' "); if ( $fetch ) // jesli user zostanie znaleziony w bazie
{
if ( md5( $_POST['pass'] ) == $fetch['haslo'] ) // jesli haslo sie zgadza {
echo 'logowanie zakonczone sukcesem'; }
else
{
echo 'Przykro mi, ale podane haslo jest bledne'; }
}
else
{
echo 'Podany uzytkownik nie istnieje w bazie danych'; }
?>
Oczywiście do takiego kodu można się przyczepić o kwestię bezpieczeństwa ( sql injection ), ale żeby nie przyciemniać tego przykładu odwołuję Cię do przyczepionego tematu sql injection na forum -> php. A więc przeanalizujmy powyższy kod, użytkownik wpisuje swój login i hasło, następnie wykonujemy zapytanie, które sprawdza czy dany użytkownik istnieje, jeżeli tak sprawdzamy hasło, i miejscu gdzie pojawia się informacja o poprawnym zalogwaniu, możemy dodać naszą zmienną sesyjną.
Mam nadzieję, że już mniej więcej wiesz o co chodzi z logowaniem. Kod pisałem z palca, więc mogą być małe błędy. W razie pytań czy wątpliwości, pisz na forum.

Pozdrawiam!