hello all i am new to this forum and need some help whit php.
I am trying to create a script that shows the number of users online.

<?php
	
	$host = "xx.xxx.xxx.xx";
	$user = "xxxx";
	$pass = "xxxx";
	$db = "users"
	
	$conn = mysql_connect("$host", "$user", "$pass") or die ("Unable to connect to database."); 
mysql_select_db("$db", $conn);

	
    include_once ("usersOnline.class.php");
$visitors_online = new usersOnline();

if (count($visitors_online->error) == 0) {

	if ($visitors_online->count_users() == 1) {
		echo "There is " . $visitors_online->count_users() . " visitor online";
	}
	else {
		echo "There are " . $visitors_online->count_users() . " visitors online";
	}
}
else {
	echo "<b>Users online class errors:</b><br /><ul>\r\n";
	for ($i = 0; $i < count($visitors_online->error); $i ++ ) {
		echo "<li>" . $visitors_online->error[$i] . "</li>\r\n";
	}
	echo "</ul>\r\n";

}
?>

My problem is : Parse error: parse error in C:\wamp\www\Untitled-2.php on line 24

My line 24 is this

$conn = mysql_connect("$host", "$user", "$pass") or die ("Unable to connect to database."); 
mysql_select_db("$db", $conn);

This is my usersOnline.class.php

class usersOnline {

	var $timeout = 600;
	var $count = 0;
	var $error;
	var $i = 0;
	
	function usersOnline () {
		$this->timestamp = time();
		$this->ip = $this->ipCheck();
		$this->new_user();
		$this->delete_user();
		$this->count_users();
	}
	
	function ipCheck() {
		if (getenv('HTTP_CLIENT_IP')) {
			$ip = getenv('HTTP_CLIENT_IP');
		}
		elseif (getenv('HTTP_X_FORWARDED_FOR')) {
			$ip = getenv('HTTP_X_FORWARDED_FOR');
		}
		elseif (getenv('HTTP_X_FORWARDED')) {
			$ip = getenv('HTTP_X_FORWARDED');
		}
		elseif (getenv('HTTP_FORWARDED_FOR')) {
			$ip = getenv('HTTP_FORWARDED_FOR');
		}
		elseif (getenv('HTTP_FORWARDED')) {
			$ip = getenv('HTTP_FORWARDED');
		}
		else {
			$ip = $_SERVER['REMOTE_ADDR'];
		}
		return $ip;
	}
	
	function new_user() {
		$insert = mysql_query ("INSERT INTO useronline(timestamp, ip) VALUES ('$this->timestamp', '$this->ip')");
		if (!$insert) {
			$this->error[$this->i] = "Unable to record new visitor\r\n";			
			$this->i ++;
		}
	}
	
	function delete_user() {
		$delete = mysql_query ("DELETE FROM useronline WHERE timestamp < ($this->timestamp - $this->timeout)");
		if (!$delete) {
			$this->error[$this->i] = "Unable to delete visitors";
			$this->i ++;
		}
	}
	
	function count_users() {
		if (count($this->error) == 0) {
			$count = mysql_num_rows ( mysql_query("SELECT DISTINCT ip FROM useronline"));
			return $count;
		}
	}

}

?>

Can any one tell me where my prob is?

Recommended Answers

All 5 Replies

Member Avatar for diafol

I haven't looked closely at your code, but it looks as though you've left out a semicolon at the end of:

$db = "users"

What wandres a small semicolon can do :)
the script is ok now thenx

@above.
if your script is work and ur problem is solved then please mark this thread to solve.

Now that i got the number of users on work i have another prob...
I am going to show the total number of registerd users(userID,user name,E-Mail)...and i dont now what this is :
"Notice: Undefined index: id in C:\wamp\www\Untitled-1.php on line 3"

The script works but thet line is buging me :)

this is line 3

$myID = $_GET['id'];

This is the script :

<?php

$myID = $_GET['id'];

$server   = 'host';
$username = 'dbuser';
$password = 'dbpass';
$database = 'db';

$connect = mysql_connect($server, $username, $password)
	or die("Error connecting: " . mysql_error());
$select = mysql_select_db($database, $connect)
	or die("Error selecting DB: " . mysql_error());

// Select a specific entry
if(strlen($myID) > 0) {
	$query = "SELECT * FROM users WHERE id='$myID'"; }
// Select EVERY entry
else {
	$query = "SELECT * FROM users"; }
?>

<center>
<table border='1' cellspacing='0' cellpadding='2'>
	<tr>
		<th>ID</th>
		<th>Nume Utilizator</th>
		<th>E-Mail</th>
	</tr>
		
<?php

$run = mysql_query($query)
	or die("Error running query: " . mysql_error());
while($row = mysql_fetch_array($run)) {
	print("\n<tr><td>{$row['ID']}</td>");
	print("\n<td>{$row['username']}</td>");
	print("\n<td>{$row['email']}</td></tr>"); }

?>

</table>
</center>
Member Avatar for diafol

Why is it bugging you?

You don't have any validation:
If expecting an integer, you should check to see that you are getting an integer. What happens if an id is not passed? You script will fail. What should you do in this case? Select a random id from the DB or show an error message before redirecting to another page?
Look up:

is_int() and isset()

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.