Loading:


    Sprawdzenie czy użytkownicy są online ! [PHP] [BAZA MYSQL]

    Witam wszystkich w moim pierwszym artykule, dziś tematyką będzie skrypt PHP w ,którym sprawdzimy czy użytkownicy w serwisie są online.

    Po pierwsze tworzymy w bazie danych:

     

    CREATE TABLE `uzytkownicy` (
      `login` varchar(25) character set utf8 collate utf8_polish_ci NOT NULL,
      `haslo` varchar(250) character set utf8 collate utf8_polish_ci NOT NULL,
      `czas` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP COMMENT 'Czas aktualny',
      `czas_last` timestamp NOT NULL default '0000-00-00 00:00:00'
    )

     

    I potem w naszej tabeli.

    INSERT INTO `uzytkownicy` (`login`, `haslo`, `czas`, `czas_last`) VALUES
    ('test', 'test', '2011-01-29 14:42:34', '2011-01-29 14:47:25'),
    ('robek', 'robek', '2011-01-29 14:42:34', '2011-01-30 14:41:26'),
    ('t1', 't1', '2011-01-29 14:47:27', '0000-00-00 00:00:00'),
    ('t2', 't2', '2011-01-29 14:47:32', '0000-00-00 00:00:00');

     

    Czas w bazie to aktualny czas zaktualizowany wtedy kiedy ktoś wejdzie na naszą stronę a

    czas_last jest aktualizowany dla użytkownika jeżeli jest zalogowany !

    I teraz dodajemy czas_last o np 5 minut jeżeli użytkownik odświeży stronę !

    Wyjaśniam tą komendę, dodaje ona czas do aktualnego !

     DATE_ADD(NOW(), INTERVAL '0#0#5#0' DAY_SECOND)

    macie: dni#godziny#minuty#sekundy

    Nasz skrypt wyświetli tylko użytkowników z ostatnich 5 minut , możecie to zmienić  wpisując dowolną liczbę minut,sekund.

    Na potrzeby przykładu dodałem logowanie:

    test/test , robek/robek , t1/t1 , t2/t2

    wystarczy zmienić datę w czas_last np o 6 minut i powinien on się pojawić jako zalogowany.

    Jeżeli czegoś nie wiecie to piszcie w komentarzach.



    Napisz Artyku³

    Listing

    <?php
    session_start();

    function lacz_bd()
     //             host| uzytkownik bazy | haslo | nazwa bazy
    {   $db = new mysqli('localhost', 'root', '', 'online');    
        if (! $db)
          return false;
       $db->autocommit(TRUE);
       return $db;
    }
    $db = lacz_bd();

    // ------------------------
    $czasaktualny = $db->query("UPDATE uzytkownicy SET czas=Now()");
    $uzytkownicy_online = $db->query("Select login,czas,czas_last From uzytkownicy Where czas_last>czas");
    $online = $uzytkownicy_online->num_rows;


    // ------------------------

    $login = addslashes($_POST['login']);
    $haslo = addslashes($_POST['haslo']);

    if (!empty($login) and !empty($haslo)) {

    $logowanie = "Select login,haslo from uzytkownicy  WHERE login='$login' and haslo='$haslo' ";
    $wynik = $db->query($logowanie);
    $ile_znalezionych = $wynik->num_rows;
    if($ile_znalezionych==1){

    $_SESSION['zalogowany'] = $login;

                            } // do 2 ifa


                            } // do 1 ifa


    // ------------------------
    ?>




    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
      "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
    <head>
      <meta http-equiv="Content-type" content="application/xhtml+xml; charset=utf-8" />
      <title> Sprawdzanie użytkowników online ! </title>
    </head>
    <body>


    <?php if (!isset($_SESSION['zalogowany'])) { ?>


    <form action="" method="POST">
    <table border="1" >     
            <tr>
        <td>Login:</td>
        <td><input type="text" id="login"  name="login" /></td>
      </tr>
      <tr>
        <td>Hasło:</td>
        <td><input type="password" id="haslo"  name="haslo" /></td>
      </tr>
              <tr>
        <td colspan="2">
          <input type="submit" name="Submit" id="submit" value="Zaloguj" />
       </td>
        </tr>       
    </table>


    <?php  } else {  
    $login = addslashes($_SESSION['zalogowany']);                          // dni#godziny#minuty#sekundy
    $czaslast = $db->query("UPDATE uzytkownicy SET czas_last=DATE_ADD(NOW(), INTERVAL '0#0#5#0' DAY_SECOND) WHERE login='$login'");
     ?>

    <a href="?wyloguj">Wyloguj</a>

    <?php  }

    if (isset($_GET['wyloguj'])) {

    $_SESSION = array();
    session_destroy();
    echo '<META HTTP-EQUIV="Refresh" CONTENT="0;URL=index.php">';
    }
           ?>
               
    <?php           echo '<br/>Statystki z ostatnich 5 minut.<br/>';
                    echo 'Użytkowników zalogowanych: '.$online.'<br/>';  
                                                                    while($ludki = $uzytkownicy_online->fetch_array()) {
                 
                                                        echo $ludki['login'].',';
                   
                                                  }
                 ?>                  
                             
                             

    </body>
    </html>
     




    Dodano przez: texoh12 Ranga: 0 Punktów: 0
    Komentarze użytkowników
    Dzięki za skrypt, działa poprawnie.
    autor: piottro1 | 12900 | 2013-04-12 00:13:47


      • Tre¶æ komentarza
        Kod do komentarza (opcjonalnie)
        PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
        Autor
        Token
        token

         

         








    funkcje.net
    Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2025 v.1.5 | design: diviXdesign & rainbowcolors