ExBB Community » » PHP/Perl » Не могу найти ошибку в коде скрипта кто-онлайн. Помогите

Страниц (1): [1]
 

1. Gori - 20 сентября 2015 — 08:40 - перейти к сообщению
Писал Хостеру по поводу проблемы. Ответили:

Цитата:
По результатам дополнительной диагностики было установлено, что некорректное отображение информации, выдаваемой указанным Вами скриптом, вызвано ошибкой в коде этого скрипта. Ошибка вызвана некорректным написанием скрипта, а также несоответствием кода скрипта и структуры таблицы базы данных. Происходит удаление записей из таблицы базы данных без учета страницы с которой происходит вызов этого скрипта. В результате информация о посещениях очищается для всех страниц, а не только для вызванной страницы.


Это рабочий код. Очень удобный. Считает не просто сколько онлайн, а сколько онлайн на конкретной странице сайта. Но видимо где-то ошибка.

Вот код:
CODE:
<?
$server = "***.mysql";
$db_user = "***_mysql";
$db_pass = "***";
$db = "***_2";
$to_secs = 60;

$t_stamp = time();
$timeout = $t_stamp - $to_secs;

mysql_connect($server, $db_user, $db_pass);
mysql_db_query($db, "INSERT INTO CJ_UsersOnline VALUES ('$t_stamp','$REMOTE_ADDR','$PHP_SELF')");
mysql_db_query($db, "DELETE FROM CJ_UsersOnline WHERE timestamp<$timeout");
$result = mysql_db_query($db, "SELECT DISTINCT ip FROM CJ_UsersOnline WHERE file='$PHP_SELF'");
$user = mysql_num_rows($result);
mysql_close();

echo "Эту страницу читают: <b>$user</b> чел.";
?>


Это SQL запрос для создания таблиц:
CODE:
CREATE TABLE CJ_UsersOnline (
timestamp int(15) NOT NULL default '0',
ip varchar(40) NOT NULL,
FILE varchar(100) NOT NULL,
PRIMARY KEY (timestamp),
KEY ip (ip),
KEY FILE (FILE)
) TYPE=MyISAM


Помогите пожалуйста найти ошибку.
2. 1Bot - 21 сентября 2015 — 19:18 - перейти к сообщению
В скрипте все правильно (логических ошибок нет).

Строчку
CODE:
echo "Эту страницу читают: <b>$user</b> чел.";

корректнее заменить на
CODE:
echo "Эту страницу за последние $to_secs сек. читали: <b>$user</b> чел.";

(Добавление)
Еще нужно добавить в начало скрипта
CODE:
$REMOTE_ADDR = $_SERVER['REMOTE_ADDR'];
3. Gori - 22 сентября 2015 — 05:46 - перейти к сообщению
ОК. Спасибо.
(Добавление)
1Bot , а не подскажешь у меня в одном скрипте прописана така строчка:

CODE:
global $REMOTE_ADDR;


Есть ли в ней необходимость?
4. 1Bot - 22 сентября 2015 — 06:09 - перейти к сообщению
если это только в функции прописано global $REMOTE_ADDR; то логично - пусть будет, а если так - то можно убрать и заменить на $REMOTE_ADDR = $_SERVER['REMOTE_ADDR'];

Яндекс.Метрика   

Powered by ExBB
[Script Execution time: 0.0326]     [ ]