Strana 1 z 1

Online user

Napísané: Ne Dec 11, 2011 7:14 pm
od používateľa Marek Adamec
toto je kod na zobrazovanie poctu online uzivatelov na webe:

mysql

Kód: Vybrať všetko

CREATE TABLE `user_online` (
`session` char(100) NOT NULL default '',
`time` int(11) NOT NULL default '0'
) TYPE=MyISAM;
php

Kód: Vybrať všetko

############### Code

<?
session_start();
$session=session_id();
$time=time();
$time_check=$time-600; //SET TIME 10 Minute

$host="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Database name
$tbl_name="user_online"; // Table name

// Connect to server and select databse
mysql_connect("$host", "$username", "$password")or die("cannot connect to server");
mysql_select_db("$db_name")or die("cannot select DB");

$sql="SELECT * FROM $tbl_name WHERE session='$session'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count=="0"){
$sql1="INSERT INTO $tbl_name(session, time)VALUES('$session', '$time')";
$result1=mysql_query($sql1);
}
else {
"$sql2=UPDATE $tbl_name SET time='$time' WHERE session = '$session'";
$result2=mysql_query($sql2);
}

$sql3="SELECT * FROM $tbl_name";
$result3=mysql_query($sql3);

$count_user_online=mysql_num_rows($result3);

echo "User online : $count_user_online ";

// if over 10 minute, delete session 
$sql4="DELETE FROM $tbl_name WHERE time<$time_check";
$result4=mysql_query($sql4);

mysql_close();

// Open multiple browser page for result
?>
Potreboval by som PHP previest do snipetu... :D

Re: Online user

Napísané: So Dec 17, 2011 11:16 am
od používateľa _rasel^
Ahoj, vyskúšaj snippet usersOnline - využíva priamo štatistiky Etomite (v administrácií musia byť potom zapnuté), čiže nie je potrebné vytvárať ďalšie SQL tabuľky. Napíš, či to vyhovuje. Defaultne je nastavený tak, že zobrazuje aktivitu používateľov behom 15 min. a zobrazuje nie len aktivitu online používateľov, ale aj používateľov prihlásených cez administrátorské rozhranie.

Kód: Vybrať všetko

/*usersOnline V1.0
Snippet: usersOnline
Author: Cris D.
Date: 2008-11-24
Etomite: V1.0, 1.1
Use: Displays all back-end users, front-end user and site visitors activity
for a duration that you set.

Example: 
21 users active in the past 15 minutes.
18 visitors, 3 members
Admin, Billy, Steven

Note: this only shows users logged into the back 
and and hittting the front-end.  
Due to the limitations of standard etomite tables,
it does not show users logged into the front end as members, 
they count as visitors.
*/
/*********  Configure snippet settings  ****************/
$track_time = isset($track_time) ? $track_time:900;//seconds to return results for (900=15 mins).

$adminStyle="style='color:red;'";
$visitorStyle="style='color:blue;'";


/*********  Process time variables  ********************/
$time_past=round($track_time/60);//time in minutes

//get server offset time
$server_offset_time=$etomite->config['server_offset_time'];
if(!$server_offset_time) $server_offset_time = 0;
$now=(time()+$server_offset_time);
$track_period= $now - $track_time;

/*********  Get Site Stats    **************************/
$where="lasthit > {$track_period}";
//Get all back-end user activity
$tempBackend=$etomite->getIntTableRows('*', 'active_users',$where);

//Get all front-end unique visitors
$where="timestamp > {$track_period}";

$sql="SELECT DISTINCT(visitor) as visitor FROM ".$etomite->db."log_access WHERE {$where} ";
$rs= $etomite->dbQuery($sql);
$tempFrontend= $etomite->recordCount($rs);

//process back-end users
$limit = count($tempBackend);
$members='';
for($i=0; $i<$limit; $i++) {
    $user = $tempBackend[$i]['username'];
    $intKey = $tempBackend[$i]['internalKey'];
    $temp=$etomite->getIntTableRows('internalKey,role','user_attributes', 'internalKey = '.$intKey);
//allocate the selected styles according to user role
    $class='';
    if($temp[0]['role']==1){
    $style = $adminStyle;
    }else{
    $style = $visitorStyle;
    }
    $members .='<font '.$style.'> '.$user. '</font>,';
    }

/*********  Markup and display  ******************/
$chunk=
<<<END
<div id="userOnline">
  <div id="userHeader">
    <p><strong>{users}</strong> user(s) in the last <strong>{time}</strong> minutes.</p>
    <p>{membersCount} member(s) and {visitors} visitor(s).</p>
  </div>
  <div id="userBody">
  {members}
  </div>
</div>
END;

/*********  Process user Stats  ******************/

//Get some totals
$users= ($limit+$tempFrontend);

//Collect the data to parse
$data=array('users'=>$users,
            'time'=>$time_past,
            'membersCount'=>$limit,
            'members'=>$members,
            'visitors'=>$tempFrontend);
            
$out=$etomite->mergeCodeVariables(
                $chunk, $data, 
                $prefix="{",$suffix="}", 
                $oddStyle="", $evenStyle="", $tag="");

return $out;

Re: Online user

Napísané: Po Dec 19, 2011 1:57 pm
od používateľa Marek Adamec
jasne moze to byt len si to trochu upravim. Aby to vyzeralo takto:

Práve nás číta xxx ľudí

Toto je kod po mojej uprave, ale mam taky problem ze neviem kde mam co prepisat aby mi to nedavalo zarovnanie na stred... vid naspodu na mojom webe http://www.navrchol.sk chcel som aby to bolo hned za ikonkou facebooku. Skusal som odstranit <div id="userOnline"> ale potom to cele spadlo... A co viem tak ho ani v CSS nepouzivam...

Kód: Vybrať všetko

/*********  Markup and display  ******************/
$chunk=
<<<END
<div id="userOnline">
  <div id="userHeader">
    <p>Práve nás &#269;íta {users} &#318;udí.</p>
     </div>
  <div id="userBody">
  {members}
  </div>
</div>
END;

Re: Online user

Napísané: Po Dec 19, 2011 10:33 pm
od používateľa _rasel^
Ahoj, bude stačiť, ak to upravíš takto:

Kód: Vybrať všetko

/*********  Markup and display  ******************/
$chunk= "Práve nás &#269;íta {users} &#318;udí. {members}";

Re: Online user

Napísané: Ut Dec 20, 2011 11:08 am
od používateľa Marek Adamec
Kurna ja som ale vul, skusal som to takto ale zabudol som to ukoncit ";" $chunk= <p>Práve nás &#269;íta {users} &#318;udí.</p> Dakujem.