|
|
|
| Собственно сабж
Пака нет работает спрошу =) | |
|
|
|
|
|
|
|
для: Адоп Акробат
(15.09.2004 в 21:18)
| | Хм... для этого следует написать счётчик посещений. Код приводить не буду, слшиком много, а в разделе downloads лежит несколько вариантов счётичков.... Идея проста - следует в каждый файл сайта включить скрипт
<?php
include "count.php";
?>
|
В котором следует увеличивать текущий счётчик страницы или сайта на единицу.
http://www.softtime.ru/info/downloads.php | |
|
|
|
|
|
|
|
для: cheops
(15.09.2004 в 21:40)
| | Я новерно неправильно вырозился. Мне надо узнать сколько посетителей находятся в данный момент на сайте, вот у вас допустем "Участники «Online»" но мне надо не зарегестрированые пользователе, а просто все посетители | |
|
|
|
|
|
|
|
для: Адоп Акробат
(16.09.2004 в 04:22)
| | Алтернативный вариатн через базу данных!
записывать айпи посетителя,добавить в таблицу и вывести результат!
вариантов много а способов и того более | |
|
|
|
|
|
|
|
для: J.Lex
(16.09.2004 в 06:54)
| | А нельзя просто какойнебуть програмку написать??
А как из этой базы будет удолятся??
Я зашол, ушол, а в базе асталось | |
|
|
|
|
|
|
|
для: Адоп Акробат
(16.09.2004 в 14:43)
| | ну зашел ушел тоже довольно легко!просто через определенное время пусть автоматом чиститься кого нет на сайте | |
|
|
|
|
|
|
|
для: J.Lex
(16.09.2004 в 15:55)
| | Можно привязать к какой либо странице (лучше малопосещаемой) скрипт осуществляющий уничтожение записей, время добавления которых уже достаточно старое. | |
|
|
|
|
|
|
|
для: J.Lex
(16.09.2004 в 15:55)
| | А как зделать чтобы он афтоматом чистил кого нету ?? :) | |
|
|
|
|
|
|
|
для: Адоп Акробат
(16.09.2004 в 16:34)
| | Для этого в таблице для хранения IP-адресов следует добавить поле типа DATETIME, в которое в момент добаления записи помещать текущее время при помощи встроенной функции MySQL - NOW(). Посетители OnLine - это посетители за короткий интервал времени скажем за 5 минут, все записи не попадающие в этот интервал можно уничтожать... | |
|
|
|
|
|
|
|
для: cheops
(16.09.2004 в 16:45)
| | Пасиба, но а как зделать чтобы они унечтожались???? | |
|
|
|
|
|
|
|
для: Адоп Акробат
(16.09.2004 в 18:51)
| | Ну... например, при помощи SQL-запроса:
DELETE FROM base WHERE puttime<NOW() - INTERVAL 5 MINUTE
|
Который уничтожит все сообщения, поле puttime которых содержит время помещённое раньше, чем 5 минут назад. | |
|
|
|
|
|
|
|
для: cheops
(16.09.2004 в 22:09)
| | Спосибо потехоньку начил понемать но не доконца :)
Только 2 вопросика есть если вам не трудно конечно :)
1-Как использовать функцию now()
2-Как зделать чтобы один и тотже IP не заносился в базы (с помощью primary key????)
А пот еще адно допустим я зашол и в это време все из таблице удолилось то мне покажет точто 0 посетителей или 1???
Если у вас завалялся такой примерчик немоглибы мне кинуть :)
Ато чона понять немогу как это работает извеняюсь за тупость :) | |
|
|
|
|
|
|
|
для: Адоп Акробат
(16.09.2004 в 22:44)
| | Я постараюсь ответить.
1. Функцию NOW() включаете в текст запроса, это функция MySQL
К примеру:
<?php
$query = "INSERT INTO bz VALUES(0, NOW());";
mysql_query($query);
?>
|
О работе этой и многих других функций можно из мануала по MySQL
http://dev.mysql.com/doc/mysql/ru/
2. Я, к сожалению точно не знаю (поэтому не буду писать), как решить эту задачку в 1 запрос.
> А пот еще адно допустим, я зашол и в это време все из таблице удолилось то мне покажет точто 0 посетителей или 1???
Если пользоваться вышеприведенным запросом, то удаляются информация о пользователях которые не проявляли никакой активности в течении 5 минут и более, т.е. вас это не коснется.
ЗЫ
А разве нельзя для этой цели использовать сессии? И просто проходиться по активным сессиям... Или это сделать невозможно? Я с сессиями никогда не работал... | |
|
|
|
|
|
|
|
для: Адоп Акробат
(16.09.2004 в 22:44)
| | 1)Функция NOW() используется следующим образом: допустим имеется таблица base содержщая два поля
id INT
puttime DATETIME
вставить запись в такую таблицу можно при помощи запроса:
INSERT INTO base VALUES(12,"2004-09-16 22:48:00" )
|
Если полю puttime необходимо присовить текущее время, то вместо даты и вермени в двойных скобках следует поместить функцию NOW():
INSERT INTO base VALUES(12, NOW())
|
2) В общем можно, конечно, проверять при помещении IP-адреса в таблицу, имеется он в таблице или нет, но так как IP-адреса будут добавляться постоянно, а просмотр посетителей "OnLine" осуществляться лишь изредка - лучше помещать в базу данных все IP-адреса. Для того, чтобы отобразить уникальные следует воспользоваться ключевым словом DISTINCT:
SELECT DISTINCT(ip) FROM count
|
3) Нет, все IP-адреса делятся на две группы, помещённые в базу данных менее 5 минут назад и более 5 минут назад. Удаляются только последние, а так как после того, как вы зашли на сайт время обращения с вашего IP-адреса не успело устареть - удаление его не происходит. | |
|
|
|
|
|
|
|
для: cheops
(16.09.2004 в 23:00)
| | Начинаю немного понимать :)
Нащет DISTINCT мне не очень понравилось потому что будет очень много ip-ишников валятся просто так :)
А вот можно чтобы было вот так: я зашол на сайт в базу занесся мой ип и тогда я зарефрешил эту строницу и мой ип как бы обновился(если ип одинаковый то он занново записывает данные на ево место, как бы обновляются) | |
|
|
|
|
|
|
|
для: Адоп Акробат
(17.09.2004 в 05:55)
| | >Нащет DISTINCT мне не очень понравилось потому что будет очень много ip-ишников валятся просто так :)
Но ведь они он хлеба то не просят :)
>А вот можно чтобы было вот так: я зашол на сайт в базу занесся мой ип и тогда я зарефрешил эту строницу и мой ип как бы обновился
Здесь вот какие соображения: По вашему варианту на каждом хите страницы будет выполняться "лишний" запрос к базе (для проверки существования IP).
В тоже время запрос online пользователей будет происходить несравнимо реже. И его применение с DINSTINCT даст те же результаты, что и обновление существующего IP.
Ну в общем, можно делать хоть так, хоть эдак. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(17.09.2004 в 11:06)
| | Здравствуйте еще раз :)
У меня почемуто функция NOW() добовляет просто нули ???
А непотскажете какая функция узнает IP посетителя??? | |
|
|
|
|
|
|
|
для: Адоп Акробат
(17.09.2004 в 17:25)
| | >У меня почемуто функция NOW() добовляет просто нули ???
А формат поля у вас тот что нужно? DATETIME?
> непотскажете какая функция узнает IP посетителя???
Попробуйте взять из переменной окружения $REMOTE_ADDR | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(17.09.2004 в 20:54)
| | >А формат поля у вас тот что нужно? DATETIME?
АГА | |
|
|
|
|
|
|
|
для: Адоп Акробат
(15.09.2004 в 21:18)
| | Запрос я делаю вот такой
<?php
$query = mysql_query("insert into ip(date,ip) value ('NOW()', '". $REMOTE_ADDR ."')");
if(!$query)
{
echo "Ошибка";
echo mysql_error();
}
?>
|
| |
|
|
|
|
|
|
|
для: Адоп Акробат
(17.09.2004 в 21:48)
| | >Запрос я делаю вот такой
>
>
<?php
>$query = mysql_query("insert into ip(date,ip) value
>('NOW()', '". $REMOTE_ADDR ."')");
>?>
|
Вероятнее всего NOW() нужно писать без кавычек, т.к. это стандартная функция | |
|
|
|
|
|
|
|
для: Адоп Акробат
(17.09.2004 в 21:48)
| | Igorek прав - кавычки совершенно лишние, в этом случае происходит попытка добавить строку "NOW()"... | |
|
|
|
|
|
|
|
для: cheops
(17.09.2004 в 22:48)
| | С функцией NOW() получилось но теперь вот апять проблемы.
когда я делаю запрос, то IP не заносится в базу данных запрос вот такой:
<?php
$query = mysql_query("insert into ip(date,ip) value (NOW(), '". $REMOTE_ADDR ."')");
?>
|
и еще делаю вот такой запрост
<?php
$total = mysql_query("SELECT DISTINCT(ip) FROM ip");
echo $total;
?>
|
то мне пишет " Resource id #9" :( | |
|
|
|
|
|
|
|
для: Адоп Акробат
(18.09.2004 в 02:08)
| | По второму вопросу.
Нужно писать так:
<?
$total = mysql_query("SELECT DISTINCT(ip) FROM ip");
while($ip = mysql_fetch_array($total))
{
echo $ip['ip'];
}
?>
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(18.09.2004 в 04:04)
| | А я зделал вот так
<?php
$total = mysql_query("SELECT DISTINCT(ip) FROM ip");
$total1 = mysql_num_rows($total);
echo $total;
?>
|
Так пойдет?? | |
|
|
|
|
|
|
|
для: Адоп Акробат
(18.09.2004 в 04:27)
| | Если вы хотите узнать количество разных IP-адресов, то пойдет. Только вот так:
<?php
$total = mysql_query("SELECT DISTINCT(ip) FROM ip");
$total1 = mysql_num_rows($total);
echo $total1;
?>
|
В echo нужно total1 | |
|
|
|
|
|
|
|
для: Адоп Акробат
(18.09.2004 в 02:08)
| | А поле какого типа используется для хранения IP-адреса? | |
|
|
|
|
|
|
|
для: cheops
(18.09.2004 в 11:47)
| | >А поле какого типа используется для хранения IP-адреса?
char(50)
to Дизайнер
Да я так и здела просто у меня $total1 в другом месте а когда я вам здесь писал ошибся :o) | |
|
|
|
|
|
|
|
для: Адоп Акробат
(15.09.2004 в 21:18)
| | cheops как узнать IP посетителя ???
Потскажи плиз :o) | |
|
|
|
|
|
|
|
для: Адоп Акробат
(18.09.2004 в 16:00)
| | Хм... а $REMOTE_ADDR или $_SERVER['REMOTE_ADDR'] не работает? | |
|
|
|
|
|
|
|
для: cheops
(18.09.2004 в 16:34)
| | $REMOTE_ADDR он ничо не записывает .Пример
<?php
$query = mysql_query("insert into ip(date,ip) value (NOW(), '". $REMOTE_ADDR ."')");
?>
|
А $_SERVER['REMOTE_ADDR'] вставляет 127.0.0.1 но это не то | |
|
|
|
|
|
|
|
для: Адоп Акробат
(18.09.2004 в 17:29)
| | Хм... а дело где происходит? На локальном сервере или реальном? Для локального сервера ситуация нормальная как только перенесёте скрипты на реальный сервер - всё заработает как надо. Если не работает на реальном сервере, то следует спросить у хост-провайдера эквивалент перменной REMOTE_ADDR, скорее всего будет предложено использовать что-то вроде:
<?php
urldecode(getenv(HTTP_CLIENTIP));
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(18.09.2004 в 17:40)
| | Да я пробывал на локальном серваке.
Теперь понил с этим разобрался :)
Спосибо!!!!! | |
|
|
|
|
|
|
|
для: Адоп Акробат
(15.09.2004 в 21:18)
| | Опять проблема :(
Я загрузил все это хозяйство на виртуальный хост и он у меня просто напросто ничо не заносит в базу данных, пожет запроснеправельный???
<?php
$query = mysql_query("insert into ip(date,ip) value (NOW(), '". $_SERVER['REMOTE_ADDR'] ."')");
?>
|
| |
|
|
|
|
|
|
|
для: Адоп Акробат
(19.09.2004 в 19:21)
| | А чего пишет? Имеется ввиду есть какое-нибудь сообщение от интерпретатора PHP? | |
|
|
|
|
|
|
|
для: cheops
(19.09.2004 в 19:24)
| | нет :(
Я когда писал
<?php
if(!$query)
echo "Ошибка"
?>
|
То он и пишет ошибка :) | |
|
|
|
|
|
|
|
для: cheops
(19.09.2004 в 19:24)
| | А нет вот
<?php
errorYou have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'value (NOW(), '80.58.19.172')' at line 1
?>
|
| |
|
|
|
|
|
|
|
для: Адоп Акробат
(19.09.2004 в 19:35)
| | Все разобрался я писал value а надобыло values
Я почемуто путаюсь с этими бяками | |
|
|
|