Forum graficzne Burning-Brushes.pl

Logowanie i rejestracja

Abik

  • VIP
  • *****
    • Amerykański plastik
      • Zobacz profil
    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/