![]() |
![]() |
#1 |
Камрад
Join Date: июн 2002
Location: СПБ т. 1644428 и мобильник: 8-911-223-97-92
Posts: 981
|
Отлов n-ного посетителя.
Меня вот уже достаточно долгое время терзает вопрос отлова, ну например, 10000-го посетителя. Частенько берусь за поиск инфы, и сного из-за нехватки времени и ненаходимости инфы откладываю поиски на неопределенный срок, а пользователей на днях стало 11000 с лишним.
Вот слышал, что можно какую-то функцию в PHP счетчик интегрировать и тогда, когда его значение будет n, тогда откроется новое окошко с предложением пройти куда следует. Так собственно вопрос: Что это за функция? Или где можно взять подобный скрипт? |
![]() |
[Ответить с цитированием] |
![]() |
#2 |
Чебурашка-ниндзя
Join Date: мая 2000
Location: США
Posts: 289
|
надо просто уметь чуть чуть программировать, и логически мыслить. Вот псевдокод (в виде перла):
if(NumVisitor == 1000(или n)) { print "your html code"; }
__________________
Уже вечерело, а ёжики все падали да падали... |
![]() |
Дневник [Ответить с цитированием] |
![]() |
#3 |
Камрад
Темная личность Join Date: авг 2000
Location: Северная столица aka Санкт - Петербург
Posts: 1,422
|
DJ.MMM
Никаких волшебных функций не существует. Нельзя добавить в счётчик код, не зная, как этот счётчик работает. А, насколько я понимаю, самостоятельно разобраться в коде ты не сможешь. Для начала советую поискать нужный скрипт в Гугле и Яндексе: ты наверняка не первый, кому нужен отлов юбилейного посетителя. Если не получится, будем думать дальше... |
![]() |
Дневник [Ответить с цитированием] |
![]() |
#4 |
Модератор
Злыдень немрущий Join Date: сен 2000
Location: Краснодар
Posts: 2,333
|
Думаю, правильнее будет поздравлять не только тысячного посетителя, а каждого тысячного.
if( (NumVisitor % 1000) == 0) { print "Congratulate! bla-bla..."; } |
![]() |
Дневник [Ответить с цитированием] |
![]() |
#5 |
Камрад
Join Date: июн 2002
Location: СПБ т. 1644428 и мобильник: 8-911-223-97-92
Posts: 981
|
Maxtradamus, Dark, Mips
Спасибо вам, вообще-то я действительно плохо понимаю в перле, с хтмлом разабрался давно, сейчас пхпи осваиваю, именно по этому и попросил на нем кусочек, а уж встроить смогу, не в первой из 2-х скриптов собирать один, искать глюки и собственную ошибку. А то что в нете, так там везде бональный принцип отлова: "Вывешиваеться табличка, мол отпринтскринте Ваш экран с счетчиком и отправте по такому-то мэйлу(найдеться куча фотожощиков). А потом разбирайтесь с серверными логами, дабы найти именно того, кто был n-ным." |
![]() |
[Ответить с цитированием] |
![]() |
#6 |
Камрад
Join Date: июн 2002
Location: СПБ т. 1644428 и мобильник: 8-911-223-97-92
Posts: 981
|
Mips И еще, поздравлять - согдасен, но у нас в задумках было еще и награждать круглых юбиляров, очень ценными призами!
|
![]() |
[Ответить с цитированием] |
![]() |
#7 |
Камрад
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. |
![]() |
[Ответить с цитированием] |
![]() |
#8 |
Камрад
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 за его собрание ссылок. Если таки сделаю эту байду, тогда выкладу куда-нибудь, что бы другие не парились. ![]() |
![]() |
[Ответить с цитированием] |
![]() |
#9 |
Чебурашка-ниндзя
Join Date: мая 2000
Location: США
Posts: 289
|
для того чтобы открыть сообщение в новом окне надо читить мануал не по PHP, а по Javascript...
|
![]() |
Дневник [Ответить с цитированием] |
![]() |
#10 |
идиотЪ
Join Date: авг 2002
Location: Украина
Posts: 553
|
DJ.MMM
Написал токи? Можеш мне выслать?( blackneo@ukr.net ) или выложить где-то? С инструкцией что с ним делать. А то я мучался, написал его но он как-то криво пашет=( Не всегда срабатывает.... |
![]() |
Дневник [Ответить с цитированием] |
![]() |
#11 |
Модератор
Наглая жирная рожа Join Date: мая 2000
Location: Moscow
Posts: 172
|
DJ.MMM, на твой вопрос, ответ можно найти здесь, хотя в принципе, Maxtradamus на него ответил.
Кстати, Mips, думаю эту ссылку нужно повесить в Справочник веб-программера. |
![]() |
[Ответить с цитированием] |
![]() |
#12 |
Камрад
Join Date: июн 2002
Location: СПБ т. 1644428 и мобильник: 8-911-223-97-92
Posts: 981
|
*, что то все не так как я ожидал, ладно будем мучать дальше..
![]() Сенкс, и еще один.. сенкс, а вы что подумали? |
![]() |
[Ответить с цитированием] |
![]() |
#13 |
Камрад
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, т.е. отфильтровать одинаковые, посчитать кол-во уникальных и выдать общее кол-во хостов на подиум, ну как всегда теоретически легко, а с осуществлением запарки. Просто намекните, по какому пути мне идти. И вообще возможно ли осуществить мой вариант? |
![]() |
[Ответить с цитированием] |
![]() |
#14 |
Камрад
Join Date: июн 2002
Location: СПБ т. 1644428 и мобильник: 8-911-223-97-92
Posts: 981
|
...возможно, пожел изучать кукисы.
|
![]() |
[Ответить с цитированием] |
![]() |
#15 |
Join Date: сен 2001
Location: Воронеж
Posts: 2,162
|
DJ.MMM
...возможно, пожел изучать кукисы. Куки могут быть отключены. Тогда один человек с отключенными куками (и отключенным javascript, чтобы нельзя было проверить на клиенте) будет при каждом хите увеличивать счетчик на 1. Их лучше вместе с проверкой IP использовать. Рацпредложение (если ты работаешь с файлами): Сделать файл с хостами по дням: 26July2003|345 27July2003|325 ... И по файлу с хостами на каждый день. Первой строкой в нем храним значение счетчика (чтобы можно было безболезненно чистить старые файлы). Если файл с хостами обнаружить не удалось, то запускается процедура обновления файла дней/хостов и формируется новый файл для хостов текущего дня. Значение счетчика - это значение первой строки в файле хостов текущего дня + количество остальных строк. За текущий день - количество строк, кроме первой, в текущем файле хостов. |
![]() |
[Ответить с цитированием] |
![]() |
#16 |
Камрад
Темная личность 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" будет постоянно радовать нас общим числом почти уникальных посещений. ![]() |
![]() |
Дневник [Ответить с цитированием] |
![]() |
#17 |
Модератор
Join Date: мар 2001
Posts: 4,747
|
DJ.MMM
В качестве рац.предложения -- а почему не использовать MySQL какой-нибудь? И не геморройствовать с текстовыми файлами? А поводу счетчика и отслеживания релоадов -- в PHP 4 есть сеансы. Их копай, чтоб без всяких дурацких куки и IP справиться с задачей. |
![]() |
Дневник [Ответить с цитированием] |
![]() |
#18 |
Камрад
Join Date: июн 2002
Location: СПБ т. 1644428 и мобильник: 8-911-223-97-92
Posts: 981
|
Dark Это мне нравится.
Зереша Ага, только уж настроился без MySQL-а обойтись, так без него и буду, за одно и язык освою на реальном примере. |
![]() |
[Ответить с цитированием] |
![]() |
#19 |
Камрад
Темная личность Join Date: авг 2000
Location: Северная столица aka Санкт - Петербург
Posts: 1,422
|
Зереша
Можно конечно и через сессии... Но это сложнее, да и вопросы лишние появятся. Сессии и регулярные выражения - это вещи, которые обычно оставляют на потом. ![]() А вот применение MySQL здесь совершенно не к месту. Мы оперируем простейшими расчётами и двумя файлами: это не так уж громоздко, чтобы была необходимость в БД. К тому же это хорошая практика для работы с файлами: MySQL под рукой будет не всегда, а данные сохранять где-то надо. |
![]() |
Дневник [Ответить с цитированием] |
![]() |
#20 |
Модератор
Join Date: мар 2001
Posts: 4,747
|
Dark
Ну не знаю, мне сессии показались не такими уж и сложными... С файлами ещё проще: каждый день создаём файл на данные сутки, параллельно удаляя файл за предыдущий день. Ну а файл "hits.txt" будет постоянно радовать нас общим числом почти уникальных посещений. А интересно, удаление файла за предыдущий день происходит при обращении кого-то к страничке или это крон-сервис? А если этот самый тысячный был в удаленном файле? Как проверить? И почему кука на 24 часа? Человек приходит в 14.00. В 18.00 он уже не учитывается? Ему теперь положено только в 14.01 следующего дня? |
![]() |
Дневник [Ответить с цитированием] |
![]() |
#21 |
Камрад
Темная личность Join Date: авг 2000
Location: Северная столица aka Санкт - Петербург
Posts: 1,422
|
>> А интересно, удаление файла за предыдущий день происходит при обращении кого-то к страничке или это крон-сервис?
-- При обращении к странице. >> А если этот самый тысячный был в удаленном файле? Как проверить? -- Если он тысячный, скрипт об этом уведомит сразу же, а не на следующий день. ![]() >> И почему кука на 24 часа? Человек приходит в 14.00. В 18.00 он уже не учитывается? Ему теперь положено только в 14.01 следующего дня? -- Это уже личные предпочтения. Для меня индивидуальный посетитель - человек, зашедший на страницу один раз за день. |
![]() |
Дневник [Ответить с цитированием] |
![]() |
|
|