<?
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) |
Я сделал вот такую проверку
И каждый раз обновляя страницу, выдавался разный айпи, почему такое происходит? |
это зависит от многих факторов и ты не можеш на это расчитывать что твое ИП не изменится.
Работай не с ИП а с 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
точно так же как ты и с ИП это узнавать собирался. просто стартуеш сессию в самом начале скрипта а потом использусеш вместо 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 - Намерен учить все