#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 Я бы не рекомендовал, впрочем, реализовывать счетчики в той же таблице. Таблица новостей вряд ли обновляется так часто, как счетчики, это может помешать кэшированию на стороне БД, да и приложение становится менее устойчивым - с отвалившимися каунтерами выжить можно, новостями - нет.
Комментариев нет:
Отправить комментарий