Страницы

Поиск по вопросам

пятница, 31 января 2020 г.

Как сделать счетчик уникальные просмотры на PHP?

#php


Как сделать с помощью "ip" уникальные просмотры?
$id = $_GET["id"];
qeurycount = mysql_query("SELECT count FROM news WHERE news_id='$id'",$link);
$resultcount = mysql_fetch_array($qeurycount);

    $newcount = $resultcount["count"] + 1;

    $update = mysql_query ("UPDATE news SET count='$newcount' WHERE news_id='$id'",$link);
}
    


Ответы

Ответ 1



Здесь что-то не понятное, вам нужна уникальность по IP? Но где проверка IP вообще? Где запись, если этот IP пришел впервые?

Ответ 2



Ребята, вы так запросто вставляете $_SERVER['REMOTE_ADDR']; в запрос, кто вам сказал, что там айпишник а не злобный sql inj? Кто мешает заголовок подменить? По теме - ip не является показателем уникальности, есть целые города сидящие через один ip При первом посещении, ставьте уникальный id в куки, или еще лучше в сессию, и по нему считайте. От чистки куков это в общем не спасет.

Ответ 3



При посещении страницы пользователем нужно записывать IP в отдельную таблицу, если в той таблице такой ip не был записан ранее CREATE TABLE `news_show` ( `ip` varchar(32) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; Количество всех просмотров echo mysql_result(mysql_query("SELECT COUNT(*) FROM news_show"),0); Запись посетителя $ip=$_SERVER['REMOTE_ADDR']; if(mysql_result(mysql_query("SELECT COUNT(*) FROM news_show WHERE ip='$ip' LIMIT 1"),0)==0) mysql_query("INSERT INTO news_show (`ip`) values('$ip')");

Ответ 4



На таком уровне php вам нужен как просто посылатель одного запроса: UPDATE news SET count = count + 1 WHERE news_id = :id Я бы не рекомендовал, впрочем, реализовывать счетчики в той же таблице. Таблица новостей вряд ли обновляется так часто, как счетчики, это может помешать кэшированию на стороне БД, да и приложение становится менее устойчивым - с отвалившимися каунтерами выжить можно, новостями - нет.

Комментариев нет:

Отправить комментарий