 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
bluecrime
Data înscrierii: 21/Noi/2007
Mesaje: 61
Locație: Botosani
|
| Trimis: Mie Apr 30, 2008 2:01 pm Titlul subiectului: Online Users |
|
|
Am un script care arata cati utilizatori sunt online pe un site...
Am fisierul users.php
Cod: <?
include "config.php";
$t_stamp = time();
$timeout = $t_stamp - $to_secs;
mysql_connect($server, $db_user, $db_pass) or die ("Useronline Database CONNECT Error");
mysql_db_query($db, "INSERT INTO CJ_UsersOnline VALUES ('$t_stamp','$REMOTE_ADDR','$PHP_SELF')") or die("Database INSERT Error");
mysql_db_query($db, "DELETE FROM CJ_UsersOnline WHERE timestamp<$timeout") or die("Database DELETE Error");
$result = mysql_db_query($db, "SELECT DISTINCT ip FROM CJ_UsersOnline WHERE file='$PHP_SELF'") or die("Database SELECT Error");
$user = mysql_num_rows($result);
mysql_close();
echo "<b>$user</b>";
?>
Care culege si actualizeaza utilizatori online (fiecare intrare este valabila 2 minute)
si config.php
unde am datele de conectare la db si variabila aceasta:
$to_secs = 120;
si structura la tabel este asa:
Cod: CREATE TABLE CJ_UsersOnline (
timestamp int(15) NOT NULL default '0',
ip varchar(40) NOT NULL,
FILE varchar(100) NOT NULL,
PRIMARY KEY (timestamp),
KEY ip (ip),
KEY FILE (FILE)
) TYPE=MyISAM
Problema este ca in baza de date se creaza cate o intrare pentru fiecare refresh, si ramana gol campul IP si FILE.
Ce are? |
|
| Sus |
|
Quber
Data înscrierii: 27/Iun/2006
Mesaje: 752
Locație: localhost
|
| Trimis: Mie Apr 30, 2008 2:07 pm Titlul subiectului: |
|
|
| poti sa creezi o sessiune ca sa nu se introduca si sa faca update..! |
|
| Sus |
|
crivion
Data înscrierii: 10/Apr/2007
Mesaje: 529
Locație: Somewhere
|
| Trimis: Mie Apr 30, 2008 2:08 pm Titlul subiectului: |
|
|
$remoteaddr si $phpself le ai definite ca
$_SERVER['REMOTE_ADDR'] respectiv $_SERVER['PHP_SELF'] ? |
|
| Sus |
|
MihaiC
Data înscrierii: 14/Mai/2006
Mesaje: 998
Locație: Navodari
|
| Trimis: Mie Apr 30, 2008 6:17 pm Titlul subiectului: |
|
|
uite o functie pe care am facut-o eu mai demult.
Poti se te inspiri din ea si sa faci una pt. ce ai tu nevoie
P.S.: e cam mare si are multe chestii probabil inutile, te descurci tu :p
Cod: function useronline($user,$page) {
$sid = session_id();
$time_limit = 300; // 5 minute
$ip = $_SERVER['REMOTE_ADDR'];
$time = date("U");
$time_out = $time + $time_limit;
if(empty($user)) $user = 'Guest';
if(empty($page)) $page = 'Unknown';
$return = array();
if((mysql_num_rows(mysql_query("SELECT * FROM `usersonline` WHERE user_name='".$user."'")) == 1) && ($user!='Guest'))
{
mysql_query("UPDATE usersonline SET page='$page', timeout='$time_out', sid='$sid', ip='$ip' WHERE user_name='$user'") or die("UPDATE 1<br />".mysql_error());
}
elseif(mysql_num_rows(mysql_query("SELECT * FROM `usersonline` WHERE sid='".$sid."'")) == 1)
{
mysql_query("UPDATE usersonline SET timeout='$time_out', user_name='$user', page='$page' WHERE sid='$sid' AND ip='$ip'") or die("UPDATE 2<br />".mysql_error());
}else{
mysql_query("INSERT INTO usersonline (user_name, sid, ip, timeout, page) VALUES ( '$user', '$sid','$ip', '$time_out', '$page')") or die("INSERT");
}
mysql_query("DELETE FROM usersonline WHERE timeout<'$time'");
$return['total'] = mysql_num_rows(mysql_query("SELECT * FROM usersonline"));
$return['guests'] = mysql_num_rows(mysql_query("SELECT * FROM usersonline where user_name='Guest'"));
$return['members'] = mysql_num_rows(mysql_query("SELECT * FROM usersonline where user_name!='Guest'"));
return $return;
} |
|
| Sus |
|
bluecrime
Data înscrierii: 21/Noi/2007
Mesaje: 61
Locație: Botosani
|
| Trimis: Mie Apr 30, 2008 10:25 pm Titlul subiectului: |
|
|
sar'na mihai....
Mi-a fost de ajutor:) |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|