Помогите с простейшим счетчиком

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

patisosha
Сообщения: 6
Зарегистрирован: 07 ноя 2013, 21:00

07 ноя 2013, 21:13

Ребята ....помогите плиз с счетчиком переходов по ссылкам

есть вот такой PHP файл ... назову его stat.php ... ниже код ... правда мне кажется тоже немного корявый но работает Недовольство, огорчение
и есть пустой файл statistika.txt .. права на него 777

<?
$QUERY_STRING=$_SERVER['QUERY_STRING'];
if(isset($QUERY_STRING)){
$url=$QUERY_STRING;
$file=fopen("statistika.txt","r+");
$text = fread ($file, filesize("statistika.txt"));
if (strpos($text, $url) !== false){
preg_match ("#".quotemeta($url)." просмотров ([0-9]+) \\n#i", $text, $matches);
$matches[1] = $matches[1]+1;
$text = preg_replace("#(".quotemeta($url)." просмотров) ([0-9]+) (\\n)#i", "$1 $matches[1] $3", $text);
ftruncate($file, 0);
rewind($file);
fputs ($file, $text);
} else {
fputs ($file, $url." просмотров 1 \n");
}
fclose($file);
}else{
exit("<div align='center' style='font-family:verdana;font-size:12pt;color:red;'>Здесь нет ничего интересного!</div>
");
}
?>
<html>
<head>
<META http-equiv="Refresh" content="0; url=<?print $url;?>">
</head>
</html>

теперь если я ставлю несколько ссылок на чужом сайте в виде
[url]http://мой_домен/stat.php?страничка1[/url]
[url]http://мой_домен/stat.php?страничка2[/url]
[url]http://мой_домен/stat.php?страничка3[/url]

при переходе по этим ссылкам в файле statistika.txt появляются записи в таком виде
страничка1 2
страничка2 4
страничка3 1

где цифры на против ссылок указывают количество переходов по тем ссылкам

ТЕПЕРЬ САМА ПРОБЛЕМА
что добавить в код чтоб в начале этого списка была и цифра с общим количеством переходов по этим ссылкам... а то если таких ссылок 1000 то как-то не хочется каждый день считать на калькуляторе
чтоб выглядело скажем так
ВСЕГО 7
страничка1 2
страничка2 4
страничка3 1

всем спасибо
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

25 ноя 2013, 12:05

Господи, охота вам с регулярками-то возиться? Ссылок-то, я думаю, не миллион, можно спокойно считывать весь массив в оперативку, там с ним работать, а потом целиком записывать в файл. А если смотреть статистику необязательно именно в statistika.txt, то можно ее еще и оформить покрасивее. Например, в stat.php:
[syntax='PHP']
$data = unserialize(file_get_contents('statistika.php'));
$data[$url]++;
file_put_contents('statistika.php', serialize($data));
[/syntax]
А в каком-нибудь файле, предназначенном для просмотра статистики (например, statview.php):
[syntax='PHP']
$data = unserialize(file_get_contents('statistika.php'));
echo "<table border=1>
<tr><td>Всего<td>".array_sum(array_values($data));
foreach ($data as $url=>$count)
echo "<tr><td>$url<td>$count\n";
[/syntax]
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
patisosha
Сообщения: 6
Зарегистрирован: 07 ноя 2013, 21:00

25 ноя 2013, 12:35

Да собственно проблемка в другом .... вверху я показала код редиректа который мне считает переходы по ссылке и записывает их в ТХТ файл ....саму ссылку и количество переходов по ней .... но он почему то считает лишнее .... на сайте вроде посетителей нет а он мне показывает кучу переходов .... подумала может поисковые роботы переходят и это тоже записывается......запритила к индексации ссылки с редиректом ....но все равно накручивает что-то ....а что понять не могу откуда
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

25 ноя 2013, 15:07

Тут уже имеет смысл смотреть логи веб-сервера - были ли эти посетители, или это ошибка в самом скрипте
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
patisosha
Сообщения: 6
Зарегистрирован: 07 ноя 2013, 21:00

25 ноя 2013, 15:26

да это ошибка в скрипте :( ...а какая понятия не имею
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

25 ноя 2013, 17:29

Попробуйте отладить это на локальном веб-сервере, куда гарантированно не заходит никто, кроме вас. И еще раз рекомендую - упростите алгоритм ведения этой статистики. Мои три строки намного короче и понятнее, чем ваши 14. Придерживайтесь принципа KISS
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
patisosha
Сообщения: 6
Зарегистрирован: 07 ноя 2013, 21:00

25 ноя 2013, 18:37

да я не против воспользоваться тем кодом что вы предложили ....только не поняла какой код и куда засунуть .... я пробовала но у меня ничего не вышло ....
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

26 ноя 2013, 01:25

Все, начиная с $file=fopen("statistika.txt","r+");, кончая закрывающим тегом php, заменить на первый кусок.
А второй - в отдельный файл
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
patisosha
Сообщения: 6
Зарегистрирован: 07 ноя 2013, 21:00

26 ноя 2013, 12:09

эту часть я поняла ... я не понимаю что делать с файлом statistika.php
в него нужно вносить какой нибудь код ... или как и с тхт файлом оставить пустым и поставить права 777 ????
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

26 ноя 2013, 14:08

Ой, мой косяк. Имелось в виду statistika.txt.
Ответ на ваш вопрос - да, оставить пустым с правами 777. В принципе, там же все равно, где эти сериализованные данные хранятся
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить