Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2016, 09:08   #1
seric
Пользователь
 
Регистрация: 02.11.2015
Сообщений: 72
По умолчанию счетчик просмотров, при перезагрузке страницы с одного адреса просмотры увеличиваются

ЕСТЬ СЧЕТЧИК ПРОСМОТРОВ, НО ПРИ ПЕРЕЗАГРУЗКИ СТРАНИЦЫ С ОДНОГО АДРЕСА ПРОСМОТРЫ УВЕЛИЧИВАЮТСЯ, КАК ПРОПИСАТЬ ЧТО БЫ ТОЛЬКО С РАЗНЫХ IP СТАВИЛИСЬ ПРОСМОТРЫ, ПОМОГИТЕ РЕБЯТ НИ ЧЕРТА НЕ ПОНИМАЮ!!!!!!!

САМ КОД:
Код:
/* проверка, есть ли запись в MySQL */
/* таблице с таким id или ее нет */
function searchID($id)
{
$result = mysql_query ("SELECT * FROM `my_log` WHERE `page_id` LIKE '".$id."'");
$num_rows = mysql_num_rows($result);
if ($num_rows>0)
{
    return True;
}
else
{
    return False;
}
}


/* Читает запись из MySQL таблицы */
/* возвращает ассоциированный массив */
function MySQLRead($id)
{
$id = addslashes($id);
$result = mysql_query ("SELECT * FROM `my_log` WHERE `page_id` LIKE '".$id."'");
return (array)mysql_fetch_assoc($result);
}

/* Обновление времени для конкретной записи */
function UpdateTime($id, $time)
{
$id = addslashes($id);
$time = addslashes($time);
$result = mysql_query ("UPDATE `my_log` SET `date` = '".$time."' WHERE `page_id` = '".$id."'");
return $result;
}

/* Обновление счетчиков для записи с указанным id */
function UpdateCounders($id, $all, $today)
{
$id = addslashes($id);
$time = addslashes($time);
$result = mysql_query ("UPDATE `my_log` SET `all` = '".$all."',`today` = '".$today."' WHERE `page_id` = '".$id."'");
return $result;
}

/* Запись всех значений "По умолчанию" */
function Default_Write($id)
{
$id = addslashes($id);
$result = mysql_query ("INSERT INTO `my_log` ( `page_id` , `all` , `today` , `date` ) VALUES ('".$id."' , 1 , 1 , '".(time()+60*60*24)."');");
return $result;
}

$unical_page_id_gid = md5($_SERVER['REQUEST_URI']); // получение md5() хэша из url страницы

$link = mysql_connect($INFO['sql_host'], $INFO['sql_user'], $INFO['sql_pass']); // Соединение с MySQL
mysql_select_db ($INFO['sql_database']); // Выбор базы данных

if (!searchID($unical_page_id_gid)) // существует ли запись с таким id
{
    Default_Write($unical_page_id_gid); // запись всех значений по умолчанию
        define("Today_and_all_counter", "");
}
else // если не существует
{
$tmp = MySQLRead($unical_page_id_gid); // считаем значения
$all = $tmp['all'] + 1;
$today = $tmp['today'] +1;
if (time()>=$tmp['date']) // если сутки с момента записи прошли
{
    UpdateTime($unical_page_id_gid, (time()+60*60*24)); // обновим дату
    UpdateCounders($unical_page_id_gid, $all, 1); // обновим счетчики
    define("Today_and_all_counter", "Всего просмотров этой страницы: 1. Сегодня: 1");
}
else // если еще нет
{
    /* обновим счетчики */
    UpdateCounders($unical_page_id_gid, $all, $today);
}
/* устанавливаем константу с текущими значениями счетчиков */
define("Today_and_all_counter", "Всего просмотров: $all. Сегодня: $today");
}

mysql_close($link); // Разрываем соединение с MySQL 
?>

Последний раз редактировалось Alex11223; 28.06.2016 в 09:33.
seric вне форума Ответить с цитированием
Старый 28.06.2016, 10:14   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

слов нет - я тоже ничерта не понимаю в этом винегрете.
Зачем LIKE в запросах для id страницы ?
Зачем куча непонятных функций?

вообще какая задача то стоит? там 2-3 запроса, + 3 строки кода должно быть и все

в вашем ...оде нигде не идет проверка по ip - с чего же ожидать такую проверку от него?
ADSoft вне форума Ответить с цитированием
Старый 28.06.2016, 11:37   #3
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Добавлю от себя. Не стоит выбирать все данные из базы звездой (*) там где просто нужно вернуть true || false.

На много экономичнее будет вот так.


PHP код:

/* проверка, есть ли запись в MySQL */
/* таблице с таким id или ее нет */
function searchID($id){

    
$result mysql_query ("SELECT page_id FROM my_log WHERE page_id=$id");

    
$num_rows mysql_num_rows($result);

    if (
$num_rows>0)
        return 
True;
    
    return 
False;


<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение данных при перезагрузке страницы soonner JavaScript, Ajax 7 03.06.2022 23:21
Удвоенные результаты при перезагрузке страницы Pamparam PHP 5 14.03.2013 19:56
сбрасывается фильтр при перезагрузке страницы Mick_20 PHP 5 13.12.2012 18:28
Определение адреса страницы - при совпадении смена стиля vlad00777 JavaScript, Ajax 1 06.09.2011 20:52
Сохранение информации при перезагрузке страницы mikhea PHP 1 31.07.2010 16:07