[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с айпи
Dron19
Вот столкнулся с проблемой, я написал код, который распознает сколько человек онлайн, но код начал мне показывать, что сейчас 9 человек, причем каждый раз обновляя страницу число онлайн увеличивается, вот этот код

<?
if(!defined("WS")) {exit ("<p align='center'>Сюда Вам нельзя!</p>");}
function online () {
# проверяем пользователя
$ip=getenv("REMOTE_ADDR");
# автоматом удаляем не активных
mysql_query ("DELETE FROM online WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(time) > 500") or die ("Can't delete old sess");
# изменяем время пользователя или добавляем его в базу!
$select = mysql_query ("SELECT ip FROM online WHERE ip='$ip'");
if($nums = mysql_num_rows($select) > 0) {
mysql_query ("UPDATE online SET time=NOW() WHERE ip='$ip'") or exit("<p>Скрипт не может изменить поле!</p>");
} else {
mysql_query("INSERT INTO online (ip,time) VALUES ('$ip',NOW())") or exit("Скрипт не может добавить пользователя!");
}
# считаем результат сканирования пользователей
$select = mysql_query("SELECT COUNT(*) FROM online") or exit("<p>Ошибка подсчета активных пользователей</p>");
$tmp = mysql_fetch_row($select);
$result = $tmp['0'];
return $result;
}
?>

в чем тут может быть проблема, вроде бы код правильный?



Спустя 39 секунд (8.06.2010 - 12:44) Dron19 написал(а):
А блин, проблма не в коде, а в том что у меня каждый раз при обновлении страницы изменяется айпи

Спустя 54 секунды (8.06.2010 - 12:45) Dron19 написал(а):
Я сделал вот такую проверку

echo $_SERVER['REMOTE_ADDR'];

И каждый раз обновляя страницу, выдавался разный айпи, почему такое происходит?

Спустя 20 минут, 16 секунд (8.06.2010 - 13:06) SlavaFr написал(а):
Цитата (Dron19 @ 8.06.2010 - 09:45)
Я сделал вот такую проверку

echo $_SERVER['REMOTE_ADDR'];

И каждый раз обновляя страницу, выдавался разный айпи, почему такое происходит?

это зависит от многих факторов и ты не можеш на это расчитывать что твое ИП не изменится.
Работай не с ИП а с session_id()

Спустя 4 минуты, 33 секунды (8.06.2010 - 13:10) Dron19 написал(а):
Вы предлагаете вместо того, что бы заносить в базу айпи пользователей, создавать им сессию и уже по ней смотреть сколько пользвателей? Если да, то скажи каким образом определять сколько их всего? Заранее спасибо...

Спустя 1 час, 6 минут, 34 секунды (8.06.2010 - 14:17) SlavaFr написал(а):
<<скажи каким образом определять сколько их всего? >>
точно так же как ты и с ИП это узнавать собирался. просто стартуеш сессию в самом начале скрипта а потом использусеш вместо REMOTE_ADDR session_id().


не обязательно, но имеется так же возможность добится того же с помощю session_set_save_handler
http://de3.php.net/manual/en/function.sess...ave-handler.php




Спустя 4 часа, 16 минут, 45 секунд (8.06.2010 - 18:33) Dron19 написал(а):
А что делает эта функция, просто давно не программировал, забыл

Спустя 30 минут, 29 секунд (8.06.2010 - 19:04) SlavaFr написал(а):
Цитата (Dron19 @ 8.06.2010 - 15:33)
А что делает эта функция, просто давно не программировал, забыл

вы имеете в виду session_set_save_handler ?

если вы давно не программировали, то забудте эту функцию.
делайте как я вам в первой части посоветовал.

1) в начале session_start()
2) a вмсто $_SERVER['REMOTE_ADDR'] пишите session_id()


Спустя 40 минут (8.06.2010 - 19:44) Dron19 написал(а):
Окей спасибо за совет =)

Спустя 20 часов, 4 минуты, 2 секунды (9.06.2010 - 15:48) Dron19 написал(а):
а эта функция тоже каждый раз при моем заходе генерирует новое id сессии, что делать?

Спустя 33 секунды (9.06.2010 - 15:48) Dron19 написал(а):
А как скинуть сюда на форум скрипт который я год назад писал, что бы вы посмотрели, ну если Вам не сложно и интересно


_____________
PHP+MySQL - уже изучил, осталось всего лишь это:
C,C++,C#,JavaScript,Python,Ruby,Perl,OpenGl,DirectX,ASP.NET - Намерен учить все
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.