Если вы не знаете языка, то Вам на фриланс. Если же знаете, то наведу на идею: сделать в бд таблицу с онлайном пользователей. И когда пользователь заходит на сайт, забивать его id и время визита в неё и каждый раз при заходе на какую-либо страницу обновлять время визита последнего. Далее, на странице вывода списка онлайн, вывести всех пользователей из созданной таблицы, у которых, например, время последнего визита менее 2минут назад. Если больше, то удалить эту запись. Если что-то не понятно, спрашивайте.
Ну, во-первых создание таблицы будет выглядеть таким образом:
CREATE TABLE online (
id int(10) NOT NULL auto_increment,
ip varchar(20) NOT NULL default \'0\',
iduser varchar(80) NOT NULL default \'0\',
unix varchar(60) NOT NULL default \'\',
KEY id (id)
)
Код не проверял, будут ошибки, пиши - отладим вместе Теперь нужно на всех страницах сделать
include \'online.php\';
on_line();
А вот если нужно вывести таблицу пользователей онлайн, то так:
on_line(true);
Вот код online.php:
------ Файл online.php
/ ф-я подсчитывает пользователей на линии; возвращает кол-во пользователей в
отформатированном виде, т.е. для вывода результата нужно лишь прописать в
нужном месте типа: echo on_line(); /
function on_line($echousers = false) {
$host = \"localhost\"; // хост, где расположена база данных MySql
$db_name = \"\"; // имя базы данных; как правило совпадает с именем юзера
// (переменная ниже), хотя я категорически против одинаковых
// имен, ориентируясь на защиту...
$db_user = \"\"; // пользователь, которому разрешен доступ к базе
$db_password = \"\"; // пароль пользователя
$wine = 300; // точность он-лайн (секунды); время, в течении которого
// пользователя, зашедшего на страничку, мы считаем находящимся
// на сайте
$table_online = \"online\"; // имя таблицы
// делаем доступной глобальную переменную ИП-адреса
global $REMOTE_ADDR;
// соединяемся с сервером MySQL и выбираем нужную базу
mysql_connect($host,$db_user,$db_password) or die(mysql_error());
mysql_select_db($db_name) or die(mysql_error());
// удаляем всех, кто уже пробыл $wine секунд или у кого ИП текущий
$sql_update = \"DELETE FROM $table_online WHERE unix+$wine < \".time().
\" OR ip = \'$_SERVER[REMOTE_ADDR]\'\";
$result_update = mysql_query($sql_update) or die(mysql_error());
// вставляем свою запись
$sql_insert = \"INSERT INTO $table_online(id,ip,iduser, unix) VALUES (\'\',\'$_SERVER[REMOTE_ADDR]\', \'$_SESSION[userid]\', \'\".time().\"\')\";
$result_insert = mysql_query($sql_insert) or die(mysql_error());
// считаем уников он-лайн
$sql_sel = \"SELECT id FROM $table_online\";
$result_sel = mysql_query($sql_sel) or die(mysql_error());
$online_people = mysql_num_rows($result_sel); // кол-во On-Line пользователей
$online_people = (string) $online_people; // приводим к строковому типу
// (так надо.. см. дальше)
$rain = strlen($online_people) - 1; // номер последнего символа в числе
// on-line юзеров
// форматирование вывода (я все сделал за вас =)
if($online_people[$rain]==2||$online_people[$rain]==3
||$online_people[$rain]==4
||(strlen($online_people)!=1&&$online_people[strlen($online_people)-2]!=1))
// $line - переменная, определяющая формат вывода
$line = \"человека\"; else $line = \"человек\";
// возвращаем результат
if($echousers==false)
return \"На сайте <strong>\".$online_people.\"</strong>$line\";
else{
echo \"<table>\";
while($row_sel = mysql_fetch_array($result_sel)){
$res2 = mysql_query(\"SELECT * FROM users WHERE pk_user=\'$row_sel[iduser]\'\"
;
$row2 = mysql_fetch_array($res2);
echo \"<tr><td>\".$row2[\'flname\'].\"</td></tr>\";
}
echo \"</table>\";
}
}