Solved

counting users on pages.

Posted on 2008-10-24
10
236 Views
Last Modified: 2012-05-05
throughout my site i track users...
i have a forum section and want to display how many users and who is viewing the forum...

the thing is i store the page next to the username that they are on and im woundering if i could search for short hand of the url... examples will help make this clearer...

here are a few examples of links on my forum

index.php?page=post&forum=<?php echo $forum?>
index.php?page=mainforums
index.php?page=reply&id=<? echo $id ?>

and so on... as you guys can see there are alot of veriations... is there away to search for the links that contain

index.php?page=reply
index.php?page=mainforums
index.php?page=post

to just display them??
0
Comment
Question by:runnerjp
  • 6
  • 4
10 Comments
 
LVL 39

Expert Comment

by:Roger Baklund
ID: 22796886
Where is the data stored? In a database? In a text file? Need more info...
0
 

Author Comment

by:runnerjp
ID: 22796928
sorry ok its stored in a database... below is how i store the information..
$timestamp = time();

$timeout = $timestamp - 180;

$username= get_username($_SESSION['user_id']);

function selfURL() { 

$s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";

$protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s; 

$port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]); 

return $protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI']; } 

function strleft($s1, $s2) { return substr($s1, 0, strpos($s1, $s2)); }

$filename = (selfURL());

//Insert User

$insert = mysql_query("REPLACE INTO `useronline` SET `timestamp`='$timestamp', `ip`='".$_SERVER['REMOTE_ADDR']."', `file`='$filename',`user`='$username',`user_id`='".$_SESSION['user_id']."'") 

or die(mysql_error()); 

?>

Open in new window

0
 
LVL 39

Expert Comment

by:Roger Baklund
ID: 22797174
To select records from a database you would use the SQL SELECT statement. Something like this:

SELECT user, FROM useronline WHERE file LIKE "%index.php?page=reply%";

The LIKE operator allows a wildcard type search, % means any sequence of any characters.

To find currently online users (last ten minutes) within a particular page, the PHP would be something like the below:
$page = "index.php?page=mainforums";

$sql = "SELECT * FROM useronline 

  WHERE file LIKE '%$page%' AND

  timestamp > now() - interval 10 minute";

$res = mysql_query($sql) or die('Error: '.mysql_error());

if(mysql_num_rows($res) > 0) {

  echo '<div class="CurrentlyOnline">';

  while($row = mysql_fetch_assoc($res))

    echo $row['user'].'<br />';

  echo '</div>';

}

Open in new window

0
 
LVL 39

Expert Comment

by:Roger Baklund
ID: 22797227
A should hurry to add that the database server can not use an index when you start the search phrase with %. It would be better for performance if you could do like this:


   WHERE file LIKE 'http://mydomain.com/path/$page%'

Open in new window

0
 

Author Comment

by:runnerjp
ID: 22797616
well i display my pages like so... http://mysite.com/members/index.php?page=reply
0
Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

 
LVL 39

Expert Comment

by:Roger Baklund
ID: 22798109
Yes... if $page contains "index.php?page=reply" you would use this:


  WHERE file LIKE 'http://mysite.com/members/$page%'

Open in new window

0
 
LVL 39

Expert Comment

by:Roger Baklund
ID: 22798130
If I am not answering your question, I may have misunderstood. Please elaborate.
0
 

Author Comment

by:runnerjp
ID: 22798438
your kinda getting there lol

thing is its an include link so i have many files with index... im just looking for those with

index.php?page=reply
index.php?page=mainforums
index.php?page=post
0
 
LVL 39

Accepted Solution

by:
Roger Baklund earned 500 total points
ID: 22798518
The code I gave you answers how to get the users of one of those three pages, right? Are you looking for a way to get all three at the same time? It would be somthing like this:
WHERE 

  file LIKE 'http://mysite.com/members/index.php?page=reply%' OR

  file LIKE 'http://mysite.com/members/index.php?page=mainforums%' OR

  file LIKE 'http://mysite.com/members/index.php?page=post%'

Open in new window

0
 

Author Closing Comment

by:runnerjp
ID: 31509675
thats 100% what i was looking for.. i will start work on it right away ty
0

Featured Post

Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

Join & Write a Comment

Suggested Solutions

Part of the Global Positioning System A geocode (https://developers.google.com/maps/documentation/geocoding/) is the major subset of a GPS coordinate (http://en.wikipedia.org/wiki/Global_Positioning_System), the other parts being the altitude and t…
This article discusses four methods for overlaying images in a container on a web page
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now