0

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?

3
Contributors
5
Replies
6
Views
8 Years
Discussion Span
Last Post by diafol
0

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"
0

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

0

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>

Edited by foxwizzy: n/a

0

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()

Edited by diafol: n/a

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.