Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Как сделать статистику (счётчик) на сайте на PHP (http://forum.oszone.net/showthread.php?t=183200)

Pavluha 17-08-2010 19:48 1475780

Как сделать статистику (счётчик) на сайте на PHP
 
Помогите, пожалуйста, создать статистику (счётчик) на сайте -- сколько раз проcмотрели сайт и сколько сейчас его просматривают. Заранее благодарен.

Coutty 17-08-2010 20:11 1475812

Создаёте табличку в MySQL, где будет храниться статистика посещений:
[ id | page | views ]
В начале каждого скрипта добавьте увеличение количества views на 1 для соответствующих page. Если по страницам не надо, то можно и без page обойтись (и вовсе в текстовом файле сохранять простое число).

Сколько сейчас просматривают - это смотря как вы воспринимаете слово "сейчас". Обычно создают таблицу в БД, куда записывают IP-адреса и время посещения примерно в таком виде:
[ IP | dateTime ]
И опять же - при каждом выполнении скрипта добавлять запись о данном пользователе и удалять все, у которых дата-время на 15 минут устарели. Посчитать записи несложно.
Обычно используют временную таблицу, т.к. сохранять эти данные при сбое не так уж и важно.

Pavluha 17-08-2010 20:20 1475822

Coutty, я не знаю где находится MySQL. Как создать таблицу в MySQL. Что для этого нужно. Я использую Денвер-3.

Coutty 17-08-2010 20:46 1475849

Pavluha, я не знаю, каков ваш уровень знаний в этом вопросе, поэтому пишу общими словами.
В наборе Денвера есть MySQL и софт для управления базами данных - phpMyAdmin. С его помощью можно разобраться в SQL-синтаксисе.

В общем случае работа с БД строится так:
1. Запрос на соединение: mysql_connect(localhost,root, 'password')
2. Выбор БД: mysql_select_db('db_name')
3. Отправка запроса к СУБД: $sql = mysql_query("SELECT * FROM table_name")
4. Разборка ответа: $result = mysql_fetch_assoc($sql). В цикле, если возвращаемых строк больше 1.

Для добавления строк используется запрос: "INSERT INTO table_name SET param1 = 'value1', param2 = 'value2'" и т.д.
Обновление строк в таблице: "UPDATE table_name SET param1 = param1 + 1" (это для примера - увеличение значения на единицу).

В любом случае, начинайте знакомство с MySQL через phpMyAdmin - удобная штука.

Pavluha 17-08-2010 21:17 1475863

Coutty, а есть ли русская версия phpMyAdmin, а то не всё понятно.

Coutty 17-08-2010 21:43 1475879

На первой же странице phpMyAdmin можно указать язык. Русский там есть.

Pavluha 17-08-2010 21:53 1475891

Coutty, вот как раз русского там нет. Только английский.

Coutty 18-08-2010 07:41 1476084

Может быть в денвере урезанный дистрибутив phpMyAdmin? Попробуйте скачать полную версию и распаковать на место старой.
Скриншот с выбором языка (у меня, правда, очень старая версия, но не думаю, что там сильно поменялось. Новая есть здесь).

Pavluha 22-08-2010 12:00 1479167

Coutty, я скачал phpMyAdmin но опять не разобрался. Как создать таблицу в phpMyAdmin.

Coutty 22-08-2010 12:24 1479194

Вот здесь, например, описано.

Pavluha 22-08-2010 12:53 1479220

Coutty, там нет скриншотов. Можете их показать.

phpprogs 23-08-2010 13:55 1479955

зарегился тут, чтобы сказать :)
Pavluha, скрины обновил

Pavluha 24-08-2010 11:28 1480629

phpprogs, у меня phpMyAdmin версии 3.3.5, а описывается 2.6.1. Можете описать работу с phpMyAdmin версии 3.3.5 или хотябы дайте ссылку на phpMyAdmin версии 2.6.1

phpprogs 25-08-2010 14:41 1481397


Pavluha 26-08-2010 16:07 1482245

Большое спасибо, phpprogs. На первой странице Coutty писал, как надо отправлять запросы к MySQL. Можно подробнее. Я создал базу testbase в которой таблица testtable. В таблице 3 поля: id, page, views. Вот мне надо, чтобы параметр views увеличивался на 1 и показывался на экране. У меня не получается сделать так, как там описано. Видно что-то неправильно делаю.

Coutty 26-08-2010 16:27 1482272

Цитата:

Цитата Pavluha
У меня не получается сделать так, как там описано. Видно что-то неправильно делаю. »

Опишите, как вы делаете.

Увеличивать так:
Код:

UPDATE `testtable` SET `views`=`views`+1
У меня под рукой сейчас нет MySQL, т.к. проверить не могу. Но должно быть так. Ошибка разве что в кавычках может быть - где-то обратные ( ` ), где-то прямые ( ' ) должны быть.
Поле-то у вас какой тип имеет? Integer?

Чтобы показывать на экране, надо делать запрос и обрабатывать:
PHP код:

$sql mysql_query("SELECT `views` FROM `testtable` WHERE `page`='$page'"); // в $page, видимо, должно быть имя страницы как в таблице
$result mysql_fetch_assoc($sql);
echo 
$result['views']; 

А чтобы не делать ошибок в нике, можно просто щёлкнуть по нему - он и вставится в поле.

Pavluha 28-08-2010 12:51 1483403

Цитата:

Цитата Coutty
Опишите, как вы делаете. »

А я делаю так:

PHP код:

<?
$page
='main';
mysql_connect('localhost','testbase','XXXXXX');
mysql_select_db('testtable');
$sql mysql_query("SELECT `views` FROM `testtable` WHERE `page`='$page'");
mysql_query("UPDATE `testtable` SET `views`=`views`+1");
$result mysql_fetch_assoc($sql);
echo 
$result;
?>

Цитата:

Цитата Coutty
Поле-то у вас какой тип имеет? Integer? »

Поле page у меня имеет тип text, а id и views -- integer

И выдаёт ошибку:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in Z:\home\testsite\www\test.php on line 7

Coutty 28-08-2010 14:43 1483473

Неправильно устанавливаете подключение.
Параметры функии mysql_connect(адрес_узла, имя_пользователя, пароль);
mysql_select_db(имя_базы_данных)

Habetdin 29-08-2010 23:22 1484498

У меня получился счетчик.. Не стоило заглядывать в тему :biggrin:

Coutty 30-08-2010 07:32 1484589

Habetdin, а зачем поле 'views' с автоинкрементом? Да ещё и ключевое... Ключевое поле предполагает уникальные значения, а в поле "просмотры" могут быть совпадающие для разных страниц.

Pavluha 30-08-2010 12:52 1484788

Цитата:

Цитата Coutty
Неправильно устанавливаете подключение.
Параметры функии mysql_connect(адрес_узла, имя_пользователя, пароль);
mysql_select_db(имя_базы_данных) »

У меня имя пользователя совпадает с именем базы данных.

Coutty 30-08-2010 15:10 1484892

Цитата:

Цитата Pavluha
У меня имя пользователя совпадает с именем базы данных. »

А это: mysql_select_db('testtable'); ? Тут надо писать testbase, видимо, а не testtable.

Habetdin 31-08-2010 00:13 1485269

Цитата:

Цитата Coutty
а зачем поле 'views' с автоинкрементом? Да ещё и ключевое... »

Я MySQL знаю на уровне автора темы :tomato2:
В качестве ключевого нужно было поле `id`? :)

Coutty 31-08-2010 07:57 1485357

Цитата:

Цитата Habetdin
В качестве ключевого нужно было поле `id`? »

В принципе, в качестве ключевого можно было использовать и page, но обычно используют числовые значения. В этом случае (да и вообще очень часто) выгодно использовать суррогатный ключ (т.е. не имеющий прямого отношения к данным) - id.

Pavluha 31-08-2010 13:58 1485598

Цитата:

Цитата Coutty
А это: mysql_select_db('testtable'); ? Тут надо писать testbase, видимо, а не testtable. »

А я и не заметил. :(

А как сделать счётчик, который показывает, сколько "сейчас" просматривают страницу?

Pavluha 16-09-2010 19:20 1497033

Пожалуйста, помогите! Мне нужен счётчик, который показывает, сколько людей сейчас на странице. То есть количество людей, зашедших в последние 15 минут.

Sham 16-09-2010 22:26 1497189

тут поищите примеры. Для такой таблицы лучше тип memory. Пишите туда ip(ключевое) и дату, удаляйте старые записи.

phpprogs 17-09-2010 06:41 1497372

Цитата:

Цитата Pavluha
Пожалуйста, помогите! Мне нужен счётчик, который показывает, сколько людей сейчас на странице. То есть количество людей, зашедших в последние 15 минут. »

я писал "Модуль онлайн", посмотри его, единственно его доработать только для того, чтобы сохранял где сейчас находится, остальное всё работает так, как ты хочешь

Pavluha 18-09-2010 17:58 1498620

phpprogs, я скачал этот модуль, но он не работает. Выскакивает ошибка:

Fatal error: Class 'sql_db' not found in Z:\home\site\www\online.php on line 11

Код точно такой:

PHP код:

<?php
/*
    +---------------------------------------------------------------------+
    |     Наименование: Модуль "Онлайн пользователи"                      |
    |            Автор: Печенюк Сергей aka programmer                     |
    |             Сайт: http://phpprogs.ru/                               |
    | При использовании скрипта ссылка на http://phpprogs.ru/ обязательна |
    +---------------------------------------------------------------------+
*/

    
class online extends sql_db {
        
// construncor
        
function online($sqlserver$sqluser$sqlpassword$database) {
            
$db parent::sql_db($sqlserver$sqluser$sqlpassword$databasefalse);
        }

        function 
listOnlineUsers($second) {
            
$sql "SELECT id_user, login, isbot, count(*) as total FROM tbl_online t where lastdate>=".(time()-$second)." group by login;";
            
parent::sql_query($sql);
            
$rowset parent::sql_fetchrowset();
            if (!empty(
$rowset) and count($rowset)>0) {
                
$result = array();
                foreach (
$rowset as $row) {
                    if (
$row['isbot'] == "yes")
                        
$result['bot'][] = $row;
                    else if (
$row['login'] == "guest")
                        
$result['guest'] = $row;
                    else
                        
$result[] = $row;
                }
                return 
$result;
            }
            else
                return 
false;
        }

        function 
isBot() {
            
$bots = array(
                
'Mail.Ru' => "Mail Ru",
                
'spider' => "spider Bot",
                
'robot' => "robot Bot",
                
'crawl' => "crawl Bot",
                
'msiecrawler' => "MSIE Crawler",
                
'spider17' => "yandex.ru",
                
'spider17.yandex.ru' => "Вот",
                
'twiceler' => "Cuil",
                
'googlebot' => "Google Bot",
                
'mediapartners-google' => "Google AdSense",
                
'slurp@inktomi' => "Hot Bot",
                
'archive_org' => "Archive.org Bot",
                
'Ask Jeeves' => "Ask Jeeves Bot",
                
'Lycos' => "Lycos Bot",
                
'WhatUSeek' => "What You Seek Bot",
                
'ia_archiver' => "IA.Archiver Bot",
                
'GigaBlast' => "Gigablast Bot",
                
'Yahoo!' => "Yahoo Bot",
                
'Yahoo-MMCrawler' => "Yahoo-MMCrawler Bot",
                
'TurtleScanner' => "TurtleScanner Bot",
                
'TurnitinBot' => "TurnitinBot",
                
'ZipppBot' => "ZipppBot",
                
'oBot' => "oBot",
                
'rambler' => "Rambler Bot",
                
'Jetbot' => "Jet Bot",
                
'NaverBot' => "Naver Bot",
                
'libwww' => "Punto Bot",
                
'aport' => "Aport Bot",
                
'msnbot' => "MSN Bot",
                
'MnoGoSearch' => "mnoGoSearch Bot",
                
'booch' => "Booch Bot",
                
'Openbot' => "Openfind Bot",
                
'scooter' => "Altavista Bot",
                
'WebCrawler' => "Fast Bot",
                
'WebZIP' => "WebZIP Bot",
                
'GetSmart' => "GetSmart Bot",
                
'grub-client' => "GrubClient Bot",
                
'Vampire' => "Net_Vampire Bot",
                
'Rambler' => "Rambler Bot",
                
'appie' => "Walhello appie",
                
'architext' => "ArchitextSpider",
                
'jeeves' => "AskJeeves",
                
'bjaaland' => "Bjaaland",
                
'ferret' => "Wild Ferret Web Hopper #1, #2, #3",
                
'gulliver' => "Northern Light Gulliver",
                
'harvest' => "Harvest",
                
'htdig' => "ht://Dig",
                
'linkwalker' => "LinkWalker",
                
'lycos_' => "Lycos",
                
'moget' => "moget",
                
'muscatferret' => "Muscat Ferret",
                
'myweb' => "Internet Shinchakubin",
                
'nomad' => "Nomad",
                
'scooter' => "Scooter",
                
'slurp' => "Inktomi Slurp",
                
'voyager' => "Voyager",
                
'weblayers' => "weblayers",
                
'antibot' => "Antibot",
                
'digout4u' => "Digout4u",
                
'echo' => "EchO!",
                
'fast-webcrawler' => "Fast-Webcrawler",
                
'ia_archiver' => "Alexa (IA Archiver)",
                
'jennybot' => "JennyBot",
                
'mercator' => "Mercator",
                
'netcraft' => "Netcraft",
                
'petersnews' => "Petersnews",
                
'unlost_web_crawler' => "Unlost Web Crawler",
                
'voila' => "Voila",
                
'webbase' => "WebBase",
                
'wisenutbot' => "WISENutbot",
                
'fish' => "Fish search",
                
'abcdatos' => "ABCdatos BotLink",
                
'acme.spider' => "Acme.Spider",
                
'ahoythehomepagefinder' => "Ahoy! The Homepage Finder",
                
'alkaline' => "Alkaline",
                
'anthill' => "Anthill",
                
'arachnophilia' => "Arachnophilia",
                
'arale' => "Arale",
                
'araneo' => "Araneo",
                
'aretha' => "Aretha",
                
'ariadne' => "ARIADNE",
                
'arks' => "arks",
                
'aspider' => "ASpider (Associative Spider)",
                
'atn.txt' => "ATN Worldwide",
                
'atomz' => "Atomz.com Search Robot",
                
'auresys' => "AURESYS",
                
'backrub' => "BackRub",
                
'bbot' => "BBot",
                
'bigbrother' => "Big Brother",
                
'blackwidow' => "BlackWidow",
                
'blindekuh' => "Die Blinde Kuh",
                
'bloodhound' => "Bloodhound",
                
'borg-bot' => "Borg-Bot",
                
'brightnet' => "bright.net caching robot",
                
'bspider' => "BSpider",
                
'cactvschemistryspider' => "CACTVS Chemistry Spider",
                
'calif' => "Calif",
                
'cassandra' => "Cassandra",
                
'cgireader' => "Digimarc Marcspider/CGI",
                
'checkbot' => "Checkbot",
                
'christcrawler' => "ChristCrawler.com",
                
'churl' => "churl",
                
'cienciaficcion' => "cIeNcIaFiCcIoN.nEt",
                
'collective' => "Collective",
                
'combine' => "Combine System",
                
'conceptbot' => "Conceptbot",
                
'coolbot' => "CoolBot",
                
'core' => "Web Core / Roots",
                
'cosmos' => "XYLEME Robot",
                
'cruiser' => "Internet Cruiser Robot",
                
'cusco' => "Cusco",
                
'cyberspyder' => "CyberSpyder Link Test",
                
'desertrealm' => "Desert Realm Spider",
                
'deweb' => "DeWeb© Katalog/Index",
                
'dienstspider' => "DienstSpider",
                
'digger' => "Digger",
                
'diibot' => "Digital Integrity Robot",
                
'direct_hit' => "Direct Hit Grabber",
                
'dnabot' => "DNAbot",
                
'download_express' => "DownLoad Express",
                
'dragonbot' => "DragonBot",
                
'dwcp' => "DWCP (Dridus' Web Cataloging Project)",
                
'e-collector' => "e-collector",
                
'ebiness' => "EbiNess",
                
'elfinbot' => "ELFINBOT",
                
'emacs' => "Emacs-w3 Search Engine",
                
'emcspider' => "ananzi",
                
'esther' => "Esther",
                
'evliyacelebi' => "Evliya Celebi",
                
'fastcrawler' => "FastCrawler",
                
'fdse' => "Fluid Dynamics Search Engine robot",
                
'felix' => "Felix IDE",
                
'fetchrover' => "FetchRover",
                
'fido' => "fido",
                
'finnish' => "Hдmдhдkki",
                
'fireball' => "KIT-Fireball",
                
'fouineur' => "Fouineur",
                
'francoroute' => "Robot Francoroute",
                
'freecrawl' => "Freecrawl",
                
'funnelweb' => "FunnelWeb",
                
'gama' => "gammaSpider, FocusedCrawler",
                
'gazz' => "gazz",
                
'gcreep' => "GCreep",
                
'getbot' => "GetBot",
                
'geturl' => "GetURL",
                
'golem' => "Golem",
                
'grapnel' => "Grapnel/0.01 Experiment",
                
'griffon' => "Griffon",
                
'gromit' => "Gromit",
                
'gulperbot' => "Gulper Bot",
                
'hambot' => "HamBot",
                
'havindex' => "havIndex",
                
'hometown' => "Hometown Spider Pro",
                
'htmlgobble' => "HTMLgobble",
                
'hyperdecontextualizer' => "Hyper-Decontextualizer",
                
'iajabot' => "iajaBot",
                
'iconoclast' => "Popular Iconoclast",
                
'ilse' => "Ingrid",
                
'imagelock' => "Imagelock",
                
'incywincy' => "IncyWincy",
                
'informant' => "Informant",
                
'infoseek' => "InfoSeek Robot 1.0",
                
'infoseeksidewinder' => "Infoseek Sidewinder",
                
'infospider' => "InfoSpiders",
                
'inspectorwww' => "Inspector Web",
                
'intelliagent' => "IntelliAgent",
                
'irobot' => "I, Robot",
                
'iron33' => "Iron33",
                
'israelisearch' => "Israeli-search",
                
'javabee' => "JavaBee",
                
'jbot' => "JBot Java Web Robot",
                
'jcrawler' => "JCrawler",
                
'jobo' => "JoBo Java Web Robot",
                
'jobot' => "Jobot",
                
'joebot' => "JoeBot",
                
'jubii' => "The Jubii Indexing Robot",
                
'jumpstation' => "JumpStation",
                
'kapsi' => "image.kapsi.net",
                
'katipo' => "Katipo",
                
'kilroy' => "Kilroy",
                
'ko_yappo_robot' => "KO_Yappo_Robot",
                
'labelgrabber.txt' => "LabelGrabber",
                
'larbin' => "larbin",
                
'legs' => "legs",
                
'linkidator' => "Link Validator",
                
'linkscan' => "LinkScan",
                
'lockon' => "Lockon",
                
'logo_gif' => "logo.gif Crawler",
                
'macworm' => "Mac WWWWorm",
                
'magpie' => "Magpie",
                
'marvin' => "marvin/infoseek",
                
'mattie' => "Mattie",
                
'mediafox' => "MediaFox",
                
'merzscope' => "MerzScope",
                
'meshexplorer' => "NEC-MeshExplorer",
                
'mindcrawler' => "MindCrawler",
                
'mnogosearch' => "mnoGoSearch search engine software",
                
'momspider' => "MOMspider",
                
'monster' => "Monster",
                
'motor' => "Motor",
                
'muncher' => "Muncher",
                
'mwdsearch' => "Mwd.Search",
                
'ndspider' => "NDSpider",
                
'nederland.zoek' => "Nederland.zoek",
                
'netcarta' => "NetCarta WebMap Engine",
                
'netmechanic' => "NetMechanic",
                
'netscoop' => "NetScoop",
                
'newscan-online' => "newscan-online",
                
'nhse' => "NHSE Web Forager",
                
'northstar' => "The NorthStar Robot",
                
'nzexplorer' => "nzexplorer",
                
'objectssearch' => "ObjectsSearch",
                
'occam' => "Occam",
                
'octopus' => "HKU WWW Octopus",
                
'openfind' => "Openfind data gatherer",
                
'orb_search' => "Orb Search",
                
'packrat' => "Pack Rat",
                
'pageboy' => "PageBoy",
                
'parasite' => "ParaSite",
                
'patric' => "Patric",
                
'pegasus' => "pegasus",
                
'perignator' => "The Peregrinator",
                
'perlcrawler' => "PerlCrawler 1.0",
                
'phantom' => "Phantom",
                
'phpdig' => "PhpDig",
                
'piltdownman' => "PiltdownMan",
                
'pimptrain' => "Pimptrain.com's robot",
                
'pioneer' => "Pioneer",
                
'pitkow' => "html_analyzer",
                
'pjspider' => "Portal Juice Spider",
                
'plumtreewebaccessor' => "PlumtreeWebAccessor",
                
'poppi' => "Poppi",
                
'portalb' => "PortalB Spider",
                
'psbot' => "psbot",
                
'python' => "The Python Robot",
                
'raven' => "Raven Search",
                
'rbse' => "RBSE Spider",
                
'resumerobot' => "Resume Robot",
                
'rhcs' => "RoadHouse Crawling System",
                
'road_runner' => "Road Runner: The ImageScape Robot",
                
'robbie' => "Robbie the Robot",
                
'robi' => "ComputingSite Robi/1.0",
                
'robocrawl' => "RoboCrawl Spider",
                
'robofox' => "RoboFox",
                
'robozilla' => "Robozilla",
                
'roverbot' => "Roverbot",
                
'rules' => "RuLeS",
                
'safetynetrobot' => "SafetyNet Robot",
                
'search-info' => "Sleek",
                
'search_au' => "Search.Aus-AU.COM",
                
'searchprocess' => "SearchProcess",
                
'senrigan' => "Senrigan",
                
'sgscout' => "SG-Scout",
                
'shaggy' => "ShagSeeker",
                
'shaihulud' => "Shai'Hulud",
                
'sift' => "Sift",
                
'simbot' => "Simmany Robot Ver1.0",
                
'site-valet' => "Site Valet",
                
'sitetech' => "SiteTech-Rover",
                
'skymob' => "Skymob.com",
                
'slcrawler' => "SLCrawler",
                
'smartspider' => "Smart Spider",
                
'snooper' => "Snooper",
                
'solbot' => "Solbot",
                
'speedy' => "Speedy Spider",
                
'spider_monkey' => "spider_monkey",
                
'spiderbot' => "SpiderBot",
                
'spiderline' => "Spiderline Crawler",
                
'spiderman' => "SpiderMan",
                
'spiderview' => "SpiderView™",
                
'spry' => "Spry Wizard Robot",
                
'ssearcher' => "Site Searcher",
                
'suke' => "Suke",
                
'suntek' => "suntek search engine",
                
'sven' => "Sven",
                
'tach_bw' => "TACH Black Widow",
                
'tarantula' => "Tarantula",
                
'tarspider' => "tarspider",
                
'techbot' => "TechBOT",
                
'templeton' => "Templeton",
                
'titan' => "TITAN",
                
'titin' => "TitIn",
                
'tkwww' => "The TkWWW Robot",
                
'tlspider' => "TLSpider",
                
'ucsd' => "UCSD Crawl",
                
'udmsearch' => "UdmSearch",
                
'urlck' => "URL Check",
                
'valkyrie' => "Valkyrie",
                
'verticrawl' => "Verticrawl",
                
'victoria' => "Victoria",
                
'visionsearch' => "vision-search",
                
'voidbot' => "void-bot",
                
'vwbot' => "VWbot",
                
'w3index' => "The NWI Robot",
                
'w3m2' => "W3M2",
                
'wallpaper' => "WallPaper (alias crawlpaper)",
                
'wanderer' => "the World Wide Web Wanderer",
                
'wapspider' => "w@pSpider by wap4.com",
                
'webbandit' => "WebBandit Web Spider",
                
'webcatcher' => "WebCatcher",
                
'webcopy' => "WebCopy",
                
'webfetcher' => "webfetcher",
                
'webfoot' => "The Webfoot Robot",
                
'webinator' => "Webinator",
                
'weblinker' => "WebLinker",
                
'webmirror' => "WebMirror",
                
'webmoose' => "The Web Moose",
                
'webquest' => "WebQuest",
                
'webreader' => "Digimarc MarcSpider",
                
'webreaper' => "WebReaper",
                
'websnarf' => "Websnarf",
                
'webspider' => "WebSpider",
                
'webvac' => "WebVac",
                
'webwalk' => "webwalk",
                
'webwalker' => "WebWalker",
                
'webwatch' => "WebWatch",
                
'whatuseek' => "whatUseek Winona",
                
'whowhere' => "WhoWhere Robot",
                
'wired-digital' => "Wired Digital",
                
'wmir' => "w3mir",
                
'wolp' => "WebStolperer",
                
'wombat' => "The Web Wombat",
                
'worm' => "The World Wide Web Worm",
                
'wwwc' => "WWWC Ver 0.2.5",
                
'wz101' => "WebZinger",
                
'xget' => "XGET",
                
'awbot' => "AWBot",
                
'baiduspider' => "BaiDuSpider",
                
'bobby' => "Bobby",
                
'boris' => "Boris",
                
'bumblebee' => "Bumblebee (relevare.com)",
                
'cscrawler' => "CsCrawler",
                
'daviesbot' => "DaviesBot",
                
'exactseek' => "ExactSeek Crawler",
                
'ezresult' => "sEzresult",
                
'gigabot' => "GigaBot",
                
'gnodspider' => "sGNOD Spider",
                
'grub' => "Grub.org",
                
'henrythemiragorobot' => "Mirago",
                
'holmes' => "Holmes",
                
'internetseer' => "InternetSeer",
                
'justview' => "JustView",
                
'linkbot' => "LinkBot",
                
'linkchecker' => "LinkChecker",
                
'metager-linkchecker' => "MetaGer LinkChecker",
                
'microsoft_url_control' => "Microsoft URL Control",
                
'nagios' => "Nagios",
                
'perman' => "Perman surfer",
                
'pompos' => "Pompos",
                
'rambler' => "StackRambler",
                
'redalert' => "Red Alert",
                
'shoutcast' => "Shoutcast Directory Service",
                
'slysearch' => "SlySearch",
                
'surveybot' => "SurveyBot",
                
'turnitinbot' => "Turn It In",
                
'turtle' => "Turtle",
                
'turtlescanner' => "Turtle",
                
'ultraseek' => "Ultraseek",
                
'webclipping.com' => "WebClipping.com",
                
'webcompass' => "webcompass",
                
'wonderer' => "spider: Web Wombat Redback Spider",
                
'yahoo-verticalcrawler' => "Yahoo Vertical Crawler",
                
'zealbot' => "ZealBot",
                
'zyborg' => "Zyborg",
                
'BecomeBot' => "Become Bot",
                
'Yandex' => "Yandex Bot",
                
'StackRambler' => "Rambler Bot",
                
'ask jeeves' => "Ask Jeeves Bot",
                
'lycos' => "Lycos.com Bot",
                
'whatuseek' => "What You Seek Bot",
                
'ia_archiver' => "Archive.org Bot"
            
);

            
$userAgent $_SERVER['HTTP_USER_AGENT'];

            foreach(
$bots as $key => $value) {
                if(
strstr(strtolower($userAgent), strtolower($key))) {
                    
$bot $value;
                }
            }

            return (isset(
$bot)? $bot"");

        }

        function 
onlineUserUpdate($cid) {
            
$sql "select count(*) as total from tbl_online where sid='{$cid}'";
            
parent::sql_query($sql);
            
$total parent::sql_fetchrow();

            if (
$total['total'] > 0) {
                
$sql "update tbl_online set lastdate=".time().(isset($_SESSION['auth']) && $_SESSION['auth']==1", login='".addslashes($_SESSION['name'])."'"", login='guest'")." where sid='{$cid}'";
                
parent::sql_query($sql);
            }
            else {
                    if (isset(
$_SESSION['auth']) && $_SESSION['auth']==1) {
                        
$login $_SESSION['name'];
                        
$id_user $_SESSION['id'];
                        
$isbot 'no';
                    }
                    else {
                        
$result $this->isbot();
                        if (
$result != "") {
                            
$login $result;
                            
$id_user 0;
                            
$isbot 'yes';
                        }
                        else {
                            
$login "guest";
                            
$id_user 0;
                            
$isbot 'no';
                        }
                    }

                    
$sql "insert into tbl_online (login, isbot, lastdate, sid, id_user) VALUES ('".addslashes($login)."', '{$isbot}', ".time().", '{$cid}', {$id_user});";
                    
parent::sql_query($sql);
                }
        }

        function 
offlineUserDelete($second) {
            
$sql "delete from tbl_online where lastdate<".(time()-$second);
            
parent::sql_query($sql);
        }

    }
    
?>

Базу данных создал.

phpprogs 19-09-2010 07:48 1498882

Pavluha, в статье же написано, что используется класс для работы с Mysql, написанный ранее
http://phpprogs.ru/article/mysql-soz...raboty-s-mysql

Pavluha 23-09-2010 18:07 1502726

phpprogs, хотелось бы, чтобы код был поменьше. Неужели для простенькой на вид штуковины нужно столько кода? Мне нужно что-нибудь попроще.

phpprogs 24-09-2010 06:34 1503082

Pavluha, можно конечно сократить код строк до 20-30, но функционал пострадает очень сильно

Pavluha 02-10-2010 16:17 1509675

Цитата:

Цитата phpprogs
можно конечно сократить код строк до 20-30, но функционал пострадает очень сильно »


Мне не нужно разделение на гостей и зарегистрированных пользователей. Просто сколько людей просматривает страницу.

Pavluha 29-10-2010 17:32 1530315

Пожалуйста, помогите. Мне нужен маленький простой скриптик.

Sham 29-10-2010 18:01 1530341

вы программист или где...

Pavluha 29-10-2010 20:57 1530481

Спасибо. Тема решена.


Время: 06:09.

Время: 06:09.
© OSzone.net 2001-