Kamrad.ru

Go Back   Kamrad.ru > Авторские форумы > Веб-дизайн, вёрстка и веб-программирование

Reply
 
Thread Tools Display Modes
Old 24-07-2003, 17:12   #1
DJ.MMM
Камрад
 
DJ.MMM's Avatar
 
Join Date: июн 2002
Location: СПБ т. 1644428 и мобильник: 8-911-223-97-92
Posts: 981
Отлов n-ного посетителя.

Меня вот уже достаточно долгое время терзает вопрос отлова, ну например, 10000-го посетителя. Частенько берусь за поиск инфы, и сного из-за нехватки времени и ненаходимости инфы откладываю поиски на неопределенный срок, а пользователей на днях стало 11000 с лишним.

Вот слышал, что можно какую-то функцию в PHP счетчик интегрировать и тогда, когда его значение будет n, тогда откроется новое окошко с предложением пройти куда следует.

Так собственно вопрос:
Что это за функция? Или где можно взять подобный скрипт?
DJ.MMM is offline   [Ответить с цитированием]
Old 24-07-2003, 19:16   #2
Maxtradamus
Чебурашка-ниндзя
 
Join Date: мая 2000
Location: США
Posts: 289
надо просто уметь чуть чуть программировать, и логически мыслить. Вот псевдокод (в виде перла):

if(NumVisitor == 1000(или n))
{
print "your html code";
}
__________________
Уже вечерело, а ёжики все падали да падали...
Maxtradamus is offline   Дневник [Ответить с цитированием]
Old 25-07-2003, 06:07   #3
Dark
Камрад
Темная личность
 
Join Date: авг 2000
Location: Северная столица aka Санкт - Петербург
Posts: 1,422
DJ.MMM
Никаких волшебных функций не существует. Нельзя добавить в счётчик код, не зная, как этот счётчик работает. А, насколько я понимаю, самостоятельно разобраться в коде ты не сможешь.

Для начала советую поискать нужный скрипт в Гугле и Яндексе: ты наверняка не первый, кому нужен отлов юбилейного посетителя. Если не получится, будем думать дальше...
Dark is offline   Дневник [Ответить с цитированием]
Old 25-07-2003, 07:39   #4
Mips
Модератор
Злыдень немрущий
 
Mips's Avatar
 
Join Date: сен 2000
Location: Краснодар
Posts: 2,333
Думаю, правильнее будет поздравлять не только тысячного посетителя, а каждого тысячного.

if( (NumVisitor % 1000) == 0)
{
print "Congratulate! bla-bla...";
}
Mips is offline   Дневник [Ответить с цитированием]
Old 25-07-2003, 10:52   #5
DJ.MMM
Камрад
 
DJ.MMM's Avatar
 
Join Date: июн 2002
Location: СПБ т. 1644428 и мобильник: 8-911-223-97-92
Posts: 981
Maxtradamus, Dark, Mips
Спасибо вам, вообще-то я действительно плохо понимаю в перле, с хтмлом разабрался давно, сейчас пхпи осваиваю, именно по этому и попросил на нем кусочек, а уж встроить смогу, не в первой из 2-х скриптов собирать один, искать глюки и собственную ошибку.

А то что в нете, так там везде бональный принцип отлова:
"Вывешиваеться табличка, мол отпринтскринте Ваш экран с счетчиком и отправте по такому-то мэйлу(найдеться куча фотожощиков). А потом разбирайтесь с серверными логами, дабы найти именно того, кто был n-ным."
DJ.MMM is offline   [Ответить с цитированием]
Old 25-07-2003, 10:55   #6
DJ.MMM
Камрад
 
DJ.MMM's Avatar
 
Join Date: июн 2002
Location: СПБ т. 1644428 и мобильник: 8-911-223-97-92
Posts: 981
Mips И еще, поздравлять - согдасен, но у нас в задумках было еще и награждать круглых юбиляров, очень ценными призами!
DJ.MMM is offline   [Ответить с цитированием]
Old 25-07-2003, 13:10   #7
DJ.MMM
Камрад
 
DJ.MMM's Avatar
 
Join Date: июн 2002
Location: СПБ т. 1644428 и мобильник: 8-911-223-97-92
Posts: 981
Маленький вопрос:
Есть ПХП переменная, $counter = "counter.txt";
обозначающая значение счетчика, как правильней написать следующее, на примере меня:

$counter = 11000 + значения в файле "counter.txt";

А только что написал:
Все, еще раз спасибо, таки разобрался с ПХП осталось только привести к дружественному виду и оттестить(с этим сложнее, мы сидим не под динамическим ипом), ладно, это уже мелочи.

Last edited by DJ.MMM; 25-07-2003 at 13:34.
DJ.MMM is offline   [Ответить с цитированием]
Old 25-07-2003, 17:03   #8
DJ.MMM
Камрад
 
DJ.MMM's Avatar
 
Join Date: июн 2002
Location: СПБ т. 1644428 и мобильник: 8-911-223-97-92
Posts: 981
Во, и в очередной раз я выпутался, вышестоящий вопрос снимается.

$total_hosts_siz = обработка функции;
$total_hosts_size = $total_hosts_siz + 11000;

if ($total_hosts_size == 11001) {
print "Congratulate! bla-bla...";
}

Теперь новый вопрос, как открыть данное сообщение в новом окне?

Ни чего, это я так, делюсь для сталкивающихся с той же проблемой начинающих, вот еще почитаю мануалку к ПХП, еще и с этим разбирусь. А вообще отдельное спасибо Mips за его собрание ссылок.

Если таки сделаю эту байду, тогда выкладу куда-нибудь, что бы другие не парились.
DJ.MMM is offline   [Ответить с цитированием]
Old 26-07-2003, 00:55   #9
Maxtradamus
Чебурашка-ниндзя
 
Join Date: мая 2000
Location: США
Posts: 289
для того чтобы открыть сообщение в новом окне надо читить мануал не по PHP, а по Javascript...
Maxtradamus is offline   Дневник [Ответить с цитированием]
Old 26-07-2003, 03:37   #10
Neo
идиотЪ
 
Neo's Avatar
 
Join Date: авг 2002
Location: Украина
Posts: 553
DJ.MMM

Написал токи?

Можеш мне выслать?( blackneo@ukr.net ) или выложить где-то?
С инструкцией что с ним делать.

А то я мучался, написал его но он как-то криво пашет=(
Не всегда срабатывает....
Neo is offline   Дневник [Ответить с цитированием]
Old 26-07-2003, 10:55   #11
Urkagan
Модератор
Наглая жирная рожа
 
Join Date: мая 2000
Location: Moscow
Posts: 172
DJ.MMM, на твой вопрос, ответ можно найти здесь, хотя в принципе, Maxtradamus на него ответил.

Кстати, Mips, думаю эту ссылку нужно повесить в Справочник веб-программера.
Urkagan is offline   [Ответить с цитированием]
Old 28-07-2003, 12:04   #12
DJ.MMM
Камрад
 
DJ.MMM's Avatar
 
Join Date: июн 2002
Location: СПБ т. 1644428 и мобильник: 8-911-223-97-92
Posts: 981
*, что то все не так как я ожидал, ладно будем мучать дальше..
Сенкс, и еще один.. сенкс, а вы что подумали?
DJ.MMM is offline   [Ответить с цитированием]
Old 28-07-2003, 16:06   #13
DJ.MMM
Камрад
 
DJ.MMM's Avatar
 
Join Date: июн 2002
Location: СПБ т. 1644428 и мобильник: 8-911-223-97-92
Posts: 981
Вот сегодня опять наталкнулся на очередную непонятность..
Ближе к проблеме, обнаружил тут такую бяку, что счетчик посчитав определенный ИП, более никогда(день, неделя и т.п.) не возьмет его за хост, так вот вопрос каким лучше алгоритмом заставить его считать один и тот же ИП раз в 24 часа? Ну или раз в день

У меня была идея взять из счетчика(counter.txt) только уникальные строки, ну на пример:

193.156.73.179|26July2003
193.156.73.179|26July2003
194.186.30.100|28July2003
194.186.30.100|28July2003
193.156.73.179|28July2003

=>
1, 2 и 5, т.е. отфильтровать одинаковые, посчитать кол-во уникальных и выдать общее кол-во хостов на подиум, ну как всегда теоретически легко, а с осуществлением запарки.

Просто намекните, по какому пути мне идти. И вообще возможно ли осуществить мой вариант?
DJ.MMM is offline   [Ответить с цитированием]
Old 28-07-2003, 17:33   #14
DJ.MMM
Камрад
 
DJ.MMM's Avatar
 
Join Date: июн 2002
Location: СПБ т. 1644428 и мобильник: 8-911-223-97-92
Posts: 981
...возможно, пожел изучать кукисы.
DJ.MMM is offline   [Ответить с цитированием]
Old 28-07-2003, 17:53   #15
Anafay
 
Anafay's Avatar
 
Join Date: сен 2001
Location: Воронеж
Posts: 2,162
DJ.MMM
...возможно, пожел изучать кукисы.
Куки могут быть отключены. Тогда один человек с отключенными куками (и отключенным javascript, чтобы нельзя было проверить на клиенте) будет при каждом хите увеличивать счетчик на 1. Их лучше вместе с проверкой IP использовать.

Рацпредложение (если ты работаешь с файлами):
Сделать файл с хостами по дням:
26July2003|345
27July2003|325
...
И по файлу с хостами на каждый день. Первой строкой в нем храним значение счетчика (чтобы можно было безболезненно чистить старые файлы).
Если файл с хостами обнаружить не удалось, то запускается процедура обновления файла дней/хостов и формируется новый файл для хостов текущего дня.

Значение счетчика - это значение первой строки в файле хостов текущего дня + количество остальных строк.
За текущий день - количество строк, кроме первой, в текущем файле хостов.
Anafay is offline   [Ответить с цитированием]
Old 29-07-2003, 04:32   #16
Dark
Камрад
Темная личность
 
Join Date: авг 2000
Location: Северная столица aka Санкт - Петербург
Posts: 1,422
Предложу свой алгоритм.
1. Проверяем, есть ли у посетителя кука.
1 (а). Если куки нет, создём куку на 24 часа.
1 (б). Если кука есть, оставляем товарища в покое. exit();
2. Проверяем файлик "29_07_2003.txt" на наличие IP посетителя.
2 (а). Если IP есть, оставляем товарища в покое. exit();
2 (б). Если IP нет, открываем файлик "hits.txt", прибавляем к числу единичку и заносим IP в файлик "29_07_2003.txt".

С файлами ещё проще: каждый день создаём файл на данные сутки, параллельно удаляя файл за предыдущий день. Ну а файл "hits.txt" будет постоянно радовать нас общим числом почти уникальных посещений.
Dark is offline   Дневник [Ответить с цитированием]
Old 29-07-2003, 07:13   #17
Зереша
Модератор
 
Join Date: мар 2001
Posts: 4,747
DJ.MMM
В качестве рац.предложения -- а почему не использовать MySQL какой-нибудь? И не геморройствовать с текстовыми файлами? А поводу счетчика и отслеживания релоадов -- в PHP 4 есть сеансы. Их копай, чтоб без всяких дурацких куки и IP справиться с задачей.
Зереша is offline   Дневник [Ответить с цитированием]
Old 29-07-2003, 14:21   #18
DJ.MMM
Камрад
 
DJ.MMM's Avatar
 
Join Date: июн 2002
Location: СПБ т. 1644428 и мобильник: 8-911-223-97-92
Posts: 981
Dark Это мне нравится.

Зереша Ага, только уж настроился без MySQL-а обойтись, так без него и буду, за одно и язык освою на реальном примере.
DJ.MMM is offline   [Ответить с цитированием]
Old 30-07-2003, 04:34   #19
Dark
Камрад
Темная личность
 
Join Date: авг 2000
Location: Северная столица aka Санкт - Петербург
Posts: 1,422
Зереша
Можно конечно и через сессии... Но это сложнее, да и вопросы лишние появятся. Сессии и регулярные выражения - это вещи, которые обычно оставляют на потом.

А вот применение MySQL здесь совершенно не к месту. Мы оперируем простейшими расчётами и двумя файлами: это не так уж громоздко, чтобы была необходимость в БД. К тому же это хорошая практика для работы с файлами: MySQL под рукой будет не всегда, а данные сохранять где-то надо.
Dark is offline   Дневник [Ответить с цитированием]
Old 30-07-2003, 07:24   #20
Зереша
Модератор
 
Join Date: мар 2001
Posts: 4,747
Dark
Ну не знаю, мне сессии показались не такими уж и сложными...

С файлами ещё проще: каждый день создаём файл на данные сутки, параллельно удаляя файл за предыдущий день. Ну а файл "hits.txt" будет постоянно радовать нас общим числом почти уникальных посещений. А интересно, удаление файла за предыдущий день происходит при обращении кого-то к страничке или это крон-сервис? А если этот самый тысячный был в удаленном файле? Как проверить?
И почему кука на 24 часа? Человек приходит в 14.00. В 18.00 он уже не учитывается? Ему теперь положено только в 14.01 следующего дня?
Зереша is offline   Дневник [Ответить с цитированием]
Old 31-07-2003, 01:27   #21
Dark
Камрад
Темная личность
 
Join Date: авг 2000
Location: Северная столица aka Санкт - Петербург
Posts: 1,422
>> А интересно, удаление файла за предыдущий день происходит при обращении кого-то к страничке или это крон-сервис?
-- При обращении к странице.

>> А если этот самый тысячный был в удаленном файле? Как проверить?
-- Если он тысячный, скрипт об этом уведомит сразу же, а не на следующий день.

>> И почему кука на 24 часа? Человек приходит в 14.00. В 18.00 он уже не учитывается? Ему теперь положено только в 14.01 следующего дня?
-- Это уже личные предпочтения. Для меня индивидуальный посетитель - человек, зашедший на страницу один раз за день.
Dark is offline   Дневник [Ответить с цитированием]
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +3. The time now is 11:25.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
Любое использование материалов сайта
возможно только с разрешения его администрации.