позволяет предположить, что у нас есть эта таблица с именем visits
и она имеет два поля id
для идентификатора страницы и ip
для IP-адреса пользователя.page view counter, код предоставляется, это лучший способ?
Я написал этот код, и мне интересно, если это лучший способ?
$ip=$_SERVER['REMOTE_ADDR'];
$id=$_GET['id'];
$query = "SELECT
(SELECT COUNT(ip) FROM visits WHERE id = '{$id}' AND WHERE ip ='{$ip}') as visited,
(SELECT COUNT(ip) FROM visits WHERE id = '{$id}') as pageHits";
$result=mysql_query($query, $connection);
$row=mysql_fetch_array($result);
$pageHits=$row['pageHits'];
$visited=$row['visited']; //it's either 0 or 1;
if($visited==0){
$query ="INSERT INTO visits (ip , id) VALUES ('{$ip}', {$id})"
$result=mysql_query($query, $connection);
$pageHits++;
}
echo $pageHits;
После того, как пользователь посетил любой страницы, он устанавливает гостевую флаг в 1, так ударил счетчик не будет отслеживать любая из других страниц в будущем. Поскольку ip-адрес будет одинаковым для всех страниц –
Возможно, вам лучше просто добавить ограничение 'UNIQUE' на' (ip, id) '- иначе вы закончите условие гонки. – Amber
Убедитесь, что вы дезинфицируете параметр GET. Его открытая уязвимость в вашем коде, как он сейчас стоит – xbonez