Loading:

Ferie zimowe - 3 za 2

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>
 


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=2&t=12261

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: texoh12 Ranga: Poziom 3 Punktów: 50
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-17 v.1.5 | design: diviXdesign & rainbowcolors