Witamy, Gość. Zaloguj się lub zarejestruj.

Autor Wątek: Logowanie i rejestracja  (Przeczytany 11610 razy)

0 Użytkowników i 1 Gość przegląda ten wątek.

Abik

Logowanie i rejestracja
« dnia: Styczeń 29, 2011, 14:23:55 »
Robimy sobie system użytkowników na MySQL :)

W tym tutorialu opiszę jak zrobić prostą rejestracje i logowanie użytkowników.
Na początek musimy stworzyć tabelę 'users':

CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT ,
`nick` VARCHAR( 100 ) NOT NULL ,
`pass` VARCHAR( 60 ) NOT NULL ,
`data_rejestracji` INT NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM

Teraz cały kod będzie tłumaczony w komentarzach. Zaczniemy od pliku register.php:
<?php
// połączenie z mysql
mysql_connect('localhost''root''')
    or die(
'Nieudane polaczenie z baza danych...');
 
// wybór bazy danych
mysql_select_db('test')
    or die(
'Nie udalo sie wybrac bazy danych...');
 
// nagłówek
echo '<h2>Rejestracja</h2>';
 
// tworzymy prosty formularz
echo '<form action="register.php" method="POST">
Nick: <br />
<input type="text" name="nick"><br />
Hasło: <br />
<input type="password" name="pass"><br />
<input type="submit" name="ok" value="Rejestruj">
</form>'
;    
 
// jeśli zostanie naciśnięty przycisk "Rejestruj"
if(isset($_POST['ok']))
{
    
$nick trim($_POST['nick']);
    
$pass trim($_POST['pass']);
 
    
// sprawdzamy czy wszystkie dane zostały podane
    
if(empty($nick) || empty($pass)) echo 'Wpisz wszystkie pola!';
    
// jeśli tak...
    
else
    {
        
// filtrujemy dane
        
$nick strip_tagsmysql_real_escape_string(HTMLSpecialChars($nick)));
        
$pass strip_tagsmysql_real_escape_string(HTMLSpecialChars($pass)));
 
        
// sprawdzamy czy jest już użytkownik o takim loginie
        
$result mysql_query("SELECT * FROM users WHERE nick='$nick'");
 
        
// jeśli już istnieje
        
if(mysql_num_rows($result)!=0) echo 'Już istnieje konto z takim loginem!';
        
// jeśli nie...
        
else
        {
            
// pobieramy aktualną datę
            
$data time();
 
            
// kodujemy hasło
            
$pass md5($pass);
 
            
// tworzymy zapytanie
            
$query "INSERT INTO `users` (`nick` , `pass`, `data_rejestracji`) VALUES ('$nick', '$pass', '$data')";
 
            
// jeśli zapytanie wykona się poprawnie to zostanie wyświetlony stosowny komunikat
            
if(mysql_query($query)) echo 'Zostałes poprawnie zarejestrowany! Możesz się teraz <a href="login.php">zalogować</a>';
        }
    }
}
 
// rozłączenie z bazą danych
mysql_close(); 
?>


login.php:
<?php
// rozpoczęcie buforowania (jest to potrzebne by nie mieć błędów typu headers already sent)
ob_start();

// start sesji
session_start();

// połączenie z mysql
mysql_connect('localhost''root''')
    or die(
'Nieudane polaczenie z baza danych...');

// wybór bazy danych
mysql_select_db('test')
    or die(
'Nie udalo sie wybrac bazy danych...');

// nagłówek
echo '<h2>Logowanie</h2>';

// sprawdzamy czy user jest już zalogowany
if($_SESSION['logged']) echo 'Już jestes zalogowany!';
else
{
    
// tworzymy prosty formularz
    
echo '<form action="login.php" method="POST">
    Nick: <br />
    <input type="text" name="nick"><br />
    Hasło: <br />
    <input type="password" name="pass"><br />
    <input type="submit" name="ok" value="Zaloguj">
    </form>'
;
     
// jeśli zostanie naciśnięty przycisk "Zaloguj"
     
if(isset($_POST['ok']))
     {
        
$nick trim($_POST['nick']);
        
$pass trim($_POST['pass']);
      
        
// sprawdzamy czy wszystkie dane zostały podane
        
if(empty($nick) || empty($pass)) echo 'Wpisz wszystkie pola!';
       
         
// jeśli tak...
        
else
        {
            
// filtrujemy dane
            
$nick strip_tagsmysql_real_escape_stringHTMLSpecialChars($nick)));
            
$pass strip_tagsmysql_real_escape_stringHTMLSpecialChars($pass)));
           
             
// kodujemy hasło
            
$pass md5($pass);
            
            
// sprawdzamy czy istnieje użytkownik z takim loginem i hasłem
            
$result mysql_query("SELECT * FROM users WHERE nick='$nick' AND pass='$pass'");
           
             
// jeśli nie istnieje
            
if(mysql_num_rows($result)==0) echo 'Niestety podałes niepoprawne dane!';
         
             
// jeśli tak...
            
else
            {
                
// dodajemy wynik zapytania do tablicy
                
$row mysql_fetch_array($result);
           
                 
// ustawianie sesji że użytkownik jest zalogowany
                
$_SESSION['logged'] = true;

                
// dodawanie do sesji id użytkownika, login oraz datę rejestracji
                
$_SESSION['id'] = $row['id'];
                
$_SESSION['nick'] = $row['nick'];
                
$_SESSION['data_rejestracji'] = $row['data_rejestracji'];
               
                 
// wyświetlenie komunikatu oznaczającego poprawne logowanie
                
echo 'Zostałes poprawnie zalogowany! Możesz teraz przejsć na <a href="index.php">stronę główna</a>';
                }
            }
        }
    }
// rozłączenie z bazą danych
mysql_close();

// koniec buforowania
ob_end_flush();
?>


logout.php
<?php
// rozpoczęcie buforowania (jest to potrzebne by nie mieć błędów typu headers already sent)
ob_start();

// start sesji
session_start();

// nagłówek
echo '<h2>Wylogowywanie</h2>';

// jeśli user jest zalogowany
if($_SESSION['logged'])
{

     
// to go wylogowujemy i usuwamy jego dane z sesji
     
$_SESSION['logged'] = false;
     
$_SESSION['nick'] = '';
     
$_SESSION['id'] = '';
     echo 
'Zostałes poprawnie wylogowany! <a href="index.php">wróć</a>';
     }
      
     
// jeśli nie jest zalogowany
      
else
     {
          echo 
'Nie byłes zalogowany! <a href="index.php">wróć</a>';
     }

 
// koniec buforowania
ob_end_flush();
?>


index.php
<?php

// rozpoczęcie buforowania (jest to potrzebne by nie mieć błędów typu headers already sent)
ob_start();

// start sesji
session_start();

// nagłówek
echo '<h2>Strona główna</h2>';

// jeśli user jest zalogowany
if($_SESSION['logged'])
{
     
// wyświetlamy userowi jego dane
     
echo 'Witaj '.$_SESSION['nick'].'!<br />';
     echo 
'Twój ID to: '.$_SESSION['id'].'.<br />';
     echo 
'Zarejestrowałes się u nas: '.date("d.m.Y, H:i"$_SESSION['data_rejestracji']).'<br />';
     echo 
'<a href="logout.php">WYLOGUJ</a>';
     }

     
// jeśli nie jest zalogowany
     
else
     {
     echo 
'Witaj!<br />'; echo '<a href="login.php">Zaloguj się</a> lub <a href="register.php">zarejestruj nowe konto</a>';
      }

// koniec buforowania
ob_end_flush();
?>


Jeśli ktoś chce pobrać całość to zapraszam tutaj

___________________________

Autor poradnika: Fafu http://rafal-brzezinski.pl/