Счетчик уникальных просмотров страниц PHP работает некорректно

Следующий скрипт обновляет просмотры страниц, если они получены от уникального посетителя. Страница извлекает сообщения блога из баз данных и распечатывает их на экране. При первом посещении сообщения в блоге скрипт должен обновить поле просмотра страницы на 1. Но скрипт обновляет просмотр страницы при каждом обновлении страницы, а не записывает только уникальные просмотры.

if($_SESSION[$isPostID] != $isPostID)
{
   try
   {
        $updatePageViews = $db2->prepare("UPDATE articles SET pageviews = pageviews+1 WHERE id = :id");
        $updatePageViews->execute(array(':id' => $isPostID));
        if($updatePageViews->rowCount() != 1)
        {
            @createLog("Unable to update pageviews.","Unable to update pageviews!!! Title = [".$istitle."].");
        }
        else{ $_SESSION[$isPostID] = $isPostID;}
   }
   catch(PDOException $updatePageViewsERR)
   {
        $subject = "Pageviews Updation--Update data into database. [PAGE= ".$istitle."]. Error Code: #15";
        $text = $updatePageViewsERR->getMessage();
        @createLog($subject,$text);
   }
}

$ isPostID - это уникальный идентификатор, назначаемый каждому сообщению в блоге в таблице базы данных. Примечание: сессия уже запущена в скрипте.


person Mohit Mishra    schedule 22.05.2017    source источник
comment
Во-первых, вы уверены, что механизм сессий работает? Установлен / автоматизирован session_start ()? Вы пробовали распечатать $_SESSION и посмотреть, что в нем?   -  person Oleg Dubas    schedule 22.05.2017


Ответы (1)


У вас две ошибки в первой строке.

Во-первых: в условии нет закрывающей скобки. Я предполагаю, что это просто опечатка, иначе это приведет к фатальным ошибкам.

Во-вторых: вы сравниваете $isPostID с $isPostId, которые являются двумя разными переменными. Возможно, именно поэтому это не работает.

Посмотрите, решит ли это проблему

person Oleg Dubas    schedule 22.05.2017
comment
При сравнении этих двух переменных они одинаковы. Я редактировал исходный код. но они все еще не работают должным образом. - person Mohit Mishra; 22.05.2017