| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Учет кликов по ссылкам |
| Автор: Lloyd 24.2.2004, 21:30 |
| Хочу сделать систему учета кликов по ссылкам статей (чтобы у каждой статьи было типа "Посещений: 99"). Все готовые скрипты в инете мне не нравяться, да и я хочу свой собственный написать: свое - ближе Статья имеет такой урл: 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). Как осуществить такую систему, хотя бы примерно (но по-подробней Спасибо. |
| Автор: 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. Что за мистика? |