Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Учет кликов по ссылкам


Автор: Lloyd 24.2.2004, 21:30
Хочу сделать систему учета кликов по ссылкам статей (чтобы у каждой статьи было типа "Посещений: 99"). Все готовые скрипты в инете мне не нравяться, да и я хочу свой собственный написать: свое - ближе smile.gif (тем более что мне кажеться в чужых скриптах разбираться сложнее, чем написать свой)

Статья имеет такой урл: http://www.mysite.ru/index.php?section=name&id=2, где id=2 - уникальный идентификатор статьи. Все данные хочу записывать в MySQL, для чего в таблицу статей добавил поле article_hits.

При этом мне не хочеться коверкать урл статьи всякими редиректами, типа redirect?http://www.mysite.ru/index.php?section=name&id=2.

Кроме того, посещение одного и того же человека одной и той же статьи должно быть уникальным в течении суток (видимо, надо использовать Cookies).

Как осуществить такую систему, хотя бы примерно (но по-подробней smile.gif ) ?

Спасибо.

Автор: Kefir 24.2.2004, 22:15
лови код:

<?php

if(isset($_COOKIE['my_great_article_cookie']))
{ exit(0); }

mysql_connect();
mysql_query("UPDATE table SET article_hits=article_hits+1 WHERE id=".$_GET['id']);
mysql_close();
set_cookie("my_great_article_cookie", "this cookie is not empty", time() + 60*60*24);

ShowArticle($_GET['id']);

?>

Автор: Lloyd 25.2.2004, 21:37
Вот написал.
[PHP]
// проверяем что мы действительно в статье

if ((isset($id)) and (!empty($id))) {

// сам скрипт

if(!isset($_COOKIE['web']))
{
mysql_query("UPDATE articles SET article_hits=article_hits+1 WHERE article_id='$id'");
setcookie('web');

}
else {}
}
[/PHP]

Посетителя засчитывает, но только один раз. Как сделать чтобы система создавала и проверяла cookies для каждой статьи в отдельности т.е. с $id=идентификатор статьи?
Я пробовал указывать в параметрах setcookie() переменную $id - все заглючило а результат тот же (только еще к тому же некоторые мои выборки из БД поломались, хотя отношения к этому скрипту никакого не имеют).

Автор: Kefir 25.2.2004, 23:13
<?php

$key = "article_id_".$_GET['id'];
if(!isset($_COOKIE[$key]))
{
mysql_query("UPDATE articles SET article_hits=article_hits+1 WHERE article_id='$id'");
setcookie($key);
}

else {}

?>

а почему ты expire параметр не использовал?..

Автор: Unregistered 26.2.2004, 00:09
Я сделал вот так:

$key = "article_id_".$_GET['id'];
if(!isset($_COOKIE[$key]))
{
mysql_query("UPDATE articles SET article_hits=article_hits+1 WHERE article_id='$id'");
setcookie($key, "", time()+3600 );
}

else {}

Cookies не создается (проверял в каталоге Cookies).
И каждый раз к посещениям прибавляется +2 вместо +1. Что за мистика?


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)