Forum Webscript.Ru

Программирование => PHP => Тема начата: thestar от 13 Мая 2004, 17:52:46

Название: online
Отправлено: thestar от 13 Мая 2004, 17:52:46
Мужики, я знаю вы тут все хорошо знаете php, может поможите найти скрипт который бы я смог вставить в сайт и он бы следил за тем, кто онлайн на сайте. (вроде как на нюке например или что то в этом роде).
Если знаете, то помогите пожалуйста.
Название: online
Отправлено: ThE0ReTiC от 13 Мая 2004, 18:32:15
Бааалин. :abuse:
В поиск по форуму - два раза в месяц поднимаается этот вопрос :mad:
Название: online
Отправлено: thestar от 13 Мая 2004, 18:45:26
я что то не нашол:-\\
Если знаеш, то помоги пожалуйста. Очень надо...
Название: online
Отправлено: ThE0ReTiC от 13 Мая 2004, 19:03:46
thestar
http://forums.webscript.ru/showthread.php?s=&threadid=7509&highlight=online
http://www.webscript.ru/stories/02/02/01/6006190
of буду бить ногами.
чесслово.
Название: online
Отправлено: thestar от 13 Мая 2004, 19:26:29
ThE0ReTiC
Не бей, мы хорошие:)

Спасибо огромное за ссылки!
Скажи пожалуйста, как создать таблицу в БД? вот такую:
CREATE TABLE www_online (
hid int(11) NOT NULL auto_increment,
sess_id char(255) NOT NULL default \'\',
last_time char(255) NOT NULL default \'\',
PRIMARY KEY (hid)
) TYPE=MyISAM;

(это со статьи что ты мне дал).

*Имеется в наличии phpmyadmin.
ЗЫ спасибо что помогаеш! Впрочем ты мне уже помог!
Название: online
Отправлено: ThE0ReTiC от 13 Мая 2004, 19:29:25
вот коль имеется, там и создай.
вставь этот запрос в поле на закладке SQL, нажми на кнопу - получишь результат.
Название: online
Отправлено: thestar от 13 Мая 2004, 21:37:08
окей, спасибо тебе огромное!:)
Название: online
Отправлено: thestar от 14 Мая 2004, 01:54:09
странно что то... наверное я что то не то делаю, поясните пожалуйста.
создал таблицу в БД.
пишу в  страницы php код:
function show_online_user() {
global $database; //Импортируем массив с данными mysql
session_start(); //Начинаем сессию
session_set_cookie_params("0"); //Задаем время жизни куки
$id=session_id(); $time=time(); $past=time()-500; //Переменные(id - id сессии, time-текущее время,
past-время, после которого надо удалять сессии).
$link=mysql_connect($database[dbserv], $database[dbuser], $database[dbpass]); //Коннектимся к базе данных
mysql_select_db($database[dbname]); //Выбираем базу данных
mysql_query("DELETE FROM www_online WHERE last_time < \'$past\'"); //Удаляем старые сессии
$result=mysql_query("SELECT last_time FROM www_online WHERE sess_id=\'$id\'"); //Выбираем таблицу
$rows=mysql_num_rows($result); //Если в таблице есть sess_id с $id, то равно 1, иначе 0
if ($rows!="0") {
mysql_query("UPDATE www_online SET last_time=\'$time\' WHERE sess_id=\'$id\'");
} else {
mysql_query("INSERT INTO www_online (last_time, sess_id) VALUES (\'$time\', \'$id\')");
}
$result = mysql_query("SELECT * FROM www_online"); //Выбираем все сессии
$count = mysql_num_rows($result); //Считаем число сессий
return "Сейчас на сайте $count человек(а)"; //Возвращаем число юзеров
mysql_close($link); //Закрываем коннект с mysql
}

далее, сохраняю и проверяю, результат - пусто!:(
 пишу, пробую так:

function show_online_user() {
global $database; //Импортируем массив с данными mysql
session_start(); //Начинаем сессию
session_set_cookie_params("0"); //Задаем время жизни куки
$id=session_id(); $time=time(); $past=time()-500; //Переменные(id - id сессии, time-текущее время,
past-время, после которого надо удалять сессии).
$link=mysql_connect($database[моя база], $database[мой юзер и т.д.], $database[dbpass]); //Коннектимся к базе данных
mysql_select_db($database[dbname]); //Выбираем базу данных
mysql_query("DELETE FROM www_online WHERE last_time < \'$past\'"); //Удаляем старые сессии
$result=mysql_query("SELECT last_time FROM www_online WHERE sess_id=\'$id\'"); //Выбираем таблицу
$rows=mysql_num_rows($result); //Если в таблице есть sess_id с $id, то равно 1, иначе 0
if ($rows!="0") {
mysql_query("UPDATE www_online SET last_time=\'$time\' WHERE sess_id=\'$id\'");
} else {
mysql_query("INSERT INTO www_online (last_time, sess_id) VALUES (\'$time\', \'$id\')");
}
$result = mysql_query("SELECT * FROM www_online"); //Выбираем все сессии
$count = mysql_num_rows($result); //Считаем число сессий
return "Сейчас на сайте $count человек(а)"; //Возвращаем число юзеров
mysql_close($link); //Закрываем коннект с mysql
}

и всё равно не пашит!:(
хелп.
Название: online
Отправлено: thestar от 14 Мая 2004, 18:29:20
балин, не пашит:(
Название: online
Отправлено: Меняздесьдавнонет от 14 Мая 2004, 20:19:02
а он тебе обязательно нужен?
Название: online
Отправлено: AlexVN от 14 Мая 2004, 20:38:25
thestar:
1. Комментарии ты написал зря - убери. Без них код программы будет читать легче.
2. Открывай в одином окошке MySQL, в другом редактор кода, в третьем броузер.
Заходи броузером на страницу. Ничего не выводит... Переключайся в другое окошко с MySQL - набирай select * FROM www_online. Анализируй.
Если записей нет, значит они либо не вставились, либо удалились.
Переключайся в окошко с редактирования кода, добавляй комментарий на строке, в которой удаляется.
Опять в окошко с броузером - F5.
Опять в окошко с MySQL - Select...
Потом думать, изменять код, опять думать и периодически сообщать о результатах.
Название: online
Отправлено: thestar от 14 Мая 2004, 21:08:06
RomikChef, ну не то что бы я прекротил проект(мой сайт), но всё же очень бы хотел такой скрипт... понемаеш, я впервые такое делаю, поэтому хочится иметь полную статистику, а когда я бы заходил на свой сайт, то виделбы тех кто в онлайне:)  лично мне скрипт такой очень нравится, только вот поставить не удаётся...:-\\

AlexVN
1)окей, коментарии в скрипте потёр.
2)это же не я скрипт то писал:) я не то что редактировать его, я и понять то ели как понемаю его...=))
про окно с MySQL я вообще незнаю, т.е. я немогу понять что это за окно такое:)

ПС если не трудно, кто ставил или кто знает, помогите пожалуйста.
Название: online
Отправлено: Mog. от 15 Мая 2004, 07:52:27
Цитировать
thestar:
про окно с MySQL

Ну и найди такой скрипт себе без MySQL.
Название: online
Отправлено: thestar от 15 Мая 2004, 16:10:10
Mog.
ага, спасибо тебе за дельный совет...
Ну чё ты блин такие вещи постиш? я же тут не умничать пришол, а просить помощи! Ну не разбираюсь я в php and mysql ну и что с этого? зато ты не разбираешся в том что я. Каждому своё. Если не хочеш помоготь, то будь добр, не пости такие посты, а то мне лично не очень приятно.
Название: online
Отправлено: Mog. от 15 Мая 2004, 16:35:55
thestar Я вовсе не хотел тебя обижать. Я вот тоже в mysql не силен, потому взял и нашел скрипт показывающий пользователей которые он-лайн и не использующий mysql. Запустил его и он сразу заработал. И никаких проблем с тем чего не знаешь.
А ты взял и уперся в свой единственный и неповторимый скрипт.
Название: online
Отправлено: Меняздесьдавнонет от 15 Мая 2004, 17:14:33
thestar
а можно тебя попросить не постить свои вопросы?
а то мне лично они очень неприятны.

я могу даже объяснить - почему.
потому,что здесь общаются люди, которые уучатся САМИ писать программы.
а не ставят готовенькое.

я еще бы понял, если бы скрипт был жизненно важный.
а так - никому не нужная фитюлька.


хочаеется?
или учись писать на пхп и пиши скрипт сам -  мы тебе поможем.
или ставь самостоятельно
или найми знающего человека за деньги.

а ходить и стенать "у меня не работает помогите", при том, что у тебя знаний не хватает даже внятно сказать ЧТО именно не работает иКАК ДОЛЖНО работать - этого здсь не надо
Название: online
Отправлено: thestar от 15 Мая 2004, 18:03:34
RomikChef
ok.
Mog.
:)
А где взять этот скрипт, который без MySQL?
Название: online
Отправлено: Mog. от 15 Мая 2004, 18:34:04
например тут
[пожалуйста, не надо давать ссылок на ламерский сайт с ламерскими скриптами]
Хорошо. Не буду.
Название: online
Отправлено: thestar от 15 Мая 2004, 19:25:12
Mog.
thanks.
жаль что через джаву это дело работает...  но всё равно огромное тебе спасибо!
Название: online
Отправлено: PhanT0m от 15 Мая 2004, 23:50:47
thestar
AlexVN
Вы друг-друга стоите ;)
Для начала, функцию надо вызывать, после того как ты её объявил. А во вторых, если разобраться, то можно встретить в коде такую строчку: global $database; что говорит о том что до вызова ф-ции надо ещё объявить массив $database, а нужные значения массива можно подсмотреть вот тут: $link=mysql_connect($database[dbserv], $database[dbuser], $database[dbpass]);
mysql_select_db($database[dbname]);
Итого что получается:
$database = array (\'dbname\' => \'Название БД\',
                           \'dbserv\' => \'Сервер БД\',
                           \'dbuser\' => \'Имя Пользователя\',
                           \'dbpass\' => \'Пароль\');
function show_online_user() {
    global $database;
    session_start();
    session_set_cookie_params("0");
    $id=session_id(); $time=time(); $past=time()-500;
    $link=mysql_connect($database[dbserv], $database[dbuser], $database[dbpass]);
    mysql_select_db($database[dbname]);
    mysql_query("DELETE FROM www_online WHERE last_time < \'$past\'");
    $result=mysql_query("SELECT last_time FROM www_online WHERE sess_id=\'$id\'");
    $rows=mysql_num_rows($result);
    if ($rows!="0") {
        mysql_query("UPDATE www_online SET last_time=\'$time\' WHERE sess_id=\'$id\'");
    } else {
        mysql_query("INSERT INTO www_online (last_time, sess_id) VALUES (\'$time\', \'$id\')");
    }
    $result = mysql_query("SELECT * FROM www_online");
    $count = mysql_num_rows($result);
    return "Сейчас на сайте $count человек(а)";
    mysql_close($link);
}
show_online_user();
Название: online
Отправлено: thestar от 16 Мая 2004, 14:50:07
PhanT0m
ну так я ведь прописывал и имя сервера и имя базы и т.д. но всё равно нечего не работало:(
Название: online
Отправлено: PhanT0m от 16 Мая 2004, 14:56:36
thestar
Как и где ты их прописывал ?