Помогите с простейшим счетчиком
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
Ребята ....помогите плиз с счетчиком переходов по ссылкам
есть вот такой 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
всем спасибо
есть вот такой 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
всем спасибо
Господи, охота вам с регулярками-то возиться? Ссылок-то, я думаю, не миллион, можно спокойно считывать весь массив в оперативку, там с ним работать, а потом целиком записывать в файл. А если смотреть статистику необязательно именно в 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]
[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]
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Да собственно проблемка в другом .... вверху я показала код редиректа который мне считает переходы по ссылке и записывает их в ТХТ файл ....саму ссылку и количество переходов по ней .... но он почему то считает лишнее .... на сайте вроде посетителей нет а он мне показывает кучу переходов .... подумала может поисковые роботы переходят и это тоже записывается......запритила к индексации ссылки с редиректом ....но все равно накручивает что-то ....а что понять не могу откуда
Тут уже имеет смысл смотреть логи веб-сервера - были ли эти посетители, или это ошибка в самом скрипте
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
да это ошибка в скрипте ...а какая понятия не имею
Попробуйте отладить это на локальном веб-сервере, куда гарантированно не заходит никто, кроме вас. И еще раз рекомендую - упростите алгоритм ведения этой статистики. Мои три строки намного короче и понятнее, чем ваши 14. Придерживайтесь принципа KISS
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
да я не против воспользоваться тем кодом что вы предложили ....только не поняла какой код и куда засунуть .... я пробовала но у меня ничего не вышло ....
Все, начиная с $file=fopen("statistika.txt","r+");, кончая закрывающим тегом php, заменить на первый кусок.
А второй - в отдельный файл
А второй - в отдельный файл
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
эту часть я поняла ... я не понимаю что делать с файлом statistika.php
в него нужно вносить какой нибудь код ... или как и с тхт файлом оставить пустым и поставить права 777 ????
в него нужно вносить какой нибудь код ... или как и с тхт файлом оставить пустым и поставить права 777 ????
Ой, мой косяк. Имелось в виду statistika.txt.
Ответ на ваш вопрос - да, оставить пустым с правами 777. В принципе, там же все равно, где эти сериализованные данные хранятся
Ответ на ваш вопрос - да, оставить пустым с правами 777. В принципе, там же все равно, где эти сериализованные данные хранятся
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.