PHP-Script.hu
Kiemelt hirdetés:
2018. június 22. 20:32 péntek, ma Paulina névnap van


grafika


Videóbázis


Kategória: PHP
Online felhasználók
2011.07.02. 14:05

Előző cikket folytatva, most betekintést nyerhetünk abba, hogy hogyan is tudjuk megnézni, hogy jelenleg kik böngésznek minket.


Az előző cikkben már olvashattunk arról, hogy hogyan tudjuk megnézni azt, hogy kik látogatak meg minket ip cím alapján. Most ezt a cikket folytatva leírom nektek, hogy megtudjátok nézni, hogy jelenleg kik azok a felhasználók, akik most figyelnek minket, ugyan neveket nem kapunk róluk, de ip címet igen, így később ha csinálunk egy bejelentkező formot, és minden bejelentkezéskor mentjük a belépő ip címét, úgy tudjuk párosítani az online ip-kkel, így ha egyezés van ki tudjuk iratni a felhasználó nevét. Na de ez még odébb van, most inkább bágjunk bele a közepébe. :)

Rövid leírás, hogy mit csinálunk meg: Először is szükségünk lesz a már elkészített latogato táblára, ezt a táblát fogjuk szerkeszteni, ugyanis hozzá kell adnunk egy time oszlopot, ugyan meglehetne csinálni a datum táblából is a feladatott, de a time-ot azért is mutatom be, mert lehet más valakinek pont erre lesz szüksége. :) Ezek után lesz egy admin felületünk, ahol majd megtudjuk tekinteni az ip címeket, és az online tagokat.

 

Először is módosítsuk a táblánkat, az SQL részbe írjuk be ezt:

1
ALTER TABLE `latogato` ADD `timer` VARCHAR( 255 ) NOT NULL ;

Most már van egy újabb oszlopunk, ezután lássunk neki a php részének.

Először is nézzük meg, mit kell csinálnia a scriptünknek. Legfontosabb az, hogy tudjuk az ip címek, és az időt, amit majd time() függvénnyel fogunk megnézni, majd ezeket feltöltjük adatbázisba, ha még nincs fent ilyen ip, ha meg van akkor a time-ot változtatjuk meg. Ez után, hogy tudjuk az adminba, hogy online a tag, egy lekérdezést csinálunk, utána egy time() függvény lefutása után, a jelenlegi time-ból kivonjuk a lekérdezésben lévő time-ot. Ez után ha az érték kisebb, mint 300 akkor még online-nak mondjuk a tagot ( Ez csak 5 perc idő eltelte).

Na az elmélet után jöjjön a kód.

Először is csináljuk meg, amit már egyszer megcsináltunk a látogató ip címének lekérését.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
 
//ADATBÁZISHOZ//
define('MYSQL_HOST', "localhost");
define('MYSQL_USER', "felhasználóinév");
define('MYSQL_PASS', "jelszó");
define('MYSQL_BASE', "adatbázis neve");
 
//IP lekérdezése és tárolása változóban//
$IP = $_SERVER["REMOTE_ADDR"];
 
//CSATLAKOZÁS AZ ADATBÁZISHOZ ÉS LEKÉRDEZÉS, HOGY VAN-e ILYEN IP FENT//
$dbc = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die ("HIBA, NEM TUDOK CSATLAKOZNI!");
mysql_select_db(MYSQL_BASE, $dbc) or die ("NEM LÉTEZŐ ADATBÁZIS!");
 
$query = "SELECT ip FROM latogato WHERE ip = '$IP'";
$result = mysql_query($query, $dbc);
$latogato = mysql_num_rows($result);
 
//ELLENŐRZÉS, hogy feltölthető-e az új ip cím//
if ($latogato == "0") {
 $time = time();
 $query2 = "INSERT INTO latogato (ip, datum, timer) VALUES ('$IP', NOW(), '$time'");
 mysql_query($query2, $dbc);
}
else {
 $time = time();
 $query3 = "UPDATE latogato SET datum = NOW(), timer = '$time' WHERE ip = '$IP'";
 mysql_query($query3, $dbc);
}
mysql_close($dbc);
?>

Most már a rendszer müködik, ha már létezik az ip cím, akkor időt frissít, ha nem létezik, akkor meg létrehozza. Ez már garantált siker, de még megkéne tudnunk, hogy ki online, és ki nem. Na nézzük meg:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
 
//ADATBÁZISHOZ//
define('MYSQL_HOST', "localhost");
define('MYSQL_USER', "felhasználóinév");
define('MYSQL_PASS', "jelszó");
define('MYSQL_BASE', "adatbázis neve");
 
//CSATLAKOZÁS AZ ADATBÁZISHOZ ÉS LEKÉRDEZÉS, HOGY VAN-e ILYEN IP FENT//
$dbc = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die ("HIBA, NEM TUDOK CSATLAKOZNI!");
mysql_select_db(MYSQL_BASE, $dbc) or die ("NEM LÉTEZŐ ADATBÁZIS!");
 
$time = time();
$time2 = $time-300;
 
$query = "SELECT ip FROM latogato WHERE time >= '$time2'";
$result = mysql_query($query, $dbc);
$latogato = mysql_num_rows($result);
 
echo "Jelenleg Online látogatók száma: ".$latogato;
echo "<br><br>Jelenleg online látogatók ip címei:<br>";
 
while($row = mysql_fetch_array($result)){
 echo $row["ip"]."<br>";
}
 
mysql_close($dbc);
?>

Ezt a scriptet érdemes levédeni, nehogy mások is lássák az ip címeket, amit csak remélhetőleg te szeretnél látni.

Remélem ez a lecke is sokban hozzásegítet ahhoz, hogy többet láss a php lehetőségeiben. Hamarosan ismét jelentkezem! :)


 Szerző: useriNferNaL Hozzászólások(5) Hozzászólások Megosztás az iWiW-en Megosztás az Facebook-on Megosztás a Google Reader-ben Megosztás az Twitter-en 

Listázás:  Idő szerint:
Webprogramozás arr PHP info Online felhasználók
(#5) skyline1994 válasza erre: (#4) skyline1994 2011.11.01. 18:36

skyline1994
skyline1994
Szerkesztő

Bocsánat rosszat írtam :)
Tábla:

1
2
3
4
5
CREATE TABLE `latogato` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`ip` VARCHAR( 15 ) NOT NULL ,
`datum` DATETIME NOT NULL
)

Módosítás:
1
ALTER TABLE `latogato` ADD `timer` VARCHAR( 255 ) NOT NULL ;

phpmyadminba válaszd ki azt a táblát ahol a relogin van utána a fentebbi kódokat leírt sorendbe futasd :)
php fájl kicsit módosítva, hogy működjön is :)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
$IP = $_SERVER["REMOTE_ADDR"]; ///ip cím lekérdezése    
$query = "SELECT ip FROM latogato WHERE ip = '$IP'"; ///lekérdezés
$result = mysql_query($query);
$latogato = mysql_num_rows($result);
 
//ELLENŐRZÉS, hogy feltölthető-e az új ip cím//
if ($latogato == "0") {
 $time = time();
 $query2 = "INSERT INTO latogato (ip, datum, timer) VALUES ('$IP', NOW(), '$time')";
 mysql_query($query2);
}
else {
 $time = time();
 $query3 = "UPDATE latogato SET datum = NOW(), timer = '$time' WHERE ip = '$IP'";
 mysql_query($query3);
}
$time = time();
$time2 = $time-300;
 
$result = mysql_query(SELECT ip FROM latogato WHERE time >= $time2);
$latogato = mysql_num_rows($result);
 
echo "Jelenleg Online látogatók száma: ".$latogato;
echo "<br><br>Jelenleg online látogatók ip címei:<br>";
 
while($row = mysql_fetch_array($result)){
 echo $row["ip"]."<br>";
}?>

(#4) skyline1994 válasza erre: (#3) Dual 2011.11.01. 17:58

skyline1994
skyline1994
Szerkesztő

első rész :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
$query = "SELECT ip FROM latogato WHERE ip='$IP'";
$result = mysql_query($query);
$latogato = mysql_num_rows($result);
 
//ELLENŐRZÉS, hogy feltölthető-e az új ip cím//
if ($latogato == "0") {
 $time = time();
 $query2 = "INSERT INTO latogato (ip, datum, timer) VALUES ('$IP', NOW(), '$time'");
 mysql_query($query2);
}
else {
 $time = time();
 $query3 = "UPDATE latogato SET datum = NOW(), timer = '$time' WHERE ip = '$IP'";
 mysql_query($query3);
}

második rész:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
$time = time();
$time2 = $time-300;
 
$query = "SELECT ip FROM latogato WHERE time >= '$time2'";
$result = mysql_query($query);
$latogato = mysql_num_rows($result);
 
echo "Jelenleg Online látogatók száma: ".$latogato;
echo "<br><br>Jelenleg online látogatók ip címei:<br>";
 
while($row = mysql_fetch_array($result)){
 echo $row["ip"]."<br>";
}
:)

(#3) Dual válasza erre: (#2) skyline1994 2011.11.01. 14:15

Dual
Dual
Kezdő

Hali skyline1994.

Eltávolítottam ahogy írtad, most viszont ezt kapom rá:

1
2
3
4
5
6
7
8
9
 
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in  on line 15
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in  on line 16
Jelenleg Online látogatók száma:
 
Jelenleg online látogatók ip címei:
 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in on line 21
 


Az adatbázisban sem frissül hogy lenne valaki online ill IP címet se ment :/ :D

(#2) skyline1994 válasza erre: (#1) Dual 2011.11.01. 13:03

skyline1994
skyline1994
Szerkesztő

Távolítsd el ezt a rész a kódokból mivel van már adatbázis kapcsolat :)

1
2
3
4
5
6
7
8
9
10
 
//ADATBÁZISHOZ//
define('MYSQL_HOST', "localhost");
define('MYSQL_USER', "felhasználóinév");
define('MYSQL_PASS', "jelszó");
define('MYSQL_BASE', "adatbázis neve");
 
//CSATLAKOZÁS AZ ADATBÁZISHOZ ÉS LEKÉRDEZÉS, HOGY VAN-e ILYEN IP FENT//
$dbc = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die ("HIBA, NEM TUDOK CSATLAKOZNI!");
mysql_select_db(MYSQL_BASE, $dbc) or die ("NEM LÉTEZŐ ADATBÁZIS!");

és ezt a végéről
1
mysql_close($dbc);

(#1) Dual 2011.11.01. 10:02

Dual
Dual
Kezdő

Hella :)

Hát én ezt kirpóbáltam a relogin2vel és nekem nem igen akart összejönni :/

Ezeket a hibákat kapom:

1
2
3
4
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in  on line 18
 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in  on line 23
 

Listázás:  Idő szerint:


© 2006-2018 PHP-Script.hu, Minden jog fenntartva!
Design: Rácz Gergely, Oldalmotor: Rácz Gergely
Impresszum - Oldaltörténet - Oldalszabályzat