Как убрать шифрование ссылок в коде?

Twix007

Гуру форума
Регистрация
11 Окт 2009
Сообщения
257
Реакции
57
Есть счётчик просмторов страниц, но он шифрует page_id (пример: 6708b2afbfeebf6d5f2f5caf91d08a51).
Как сделать оригинальные ссылки в page_id и решить проблему:
Код:
 PHP Deprecated:  mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in counter.php on line 56
Сам счётчик:
Код:
CREATE TABLE `counts` (
  `page_id` varchar(32) NOT NULL default '',
  `all` int(11) NOT NULL default '0',
  `today` int(11) NOT NULL default '0',
  `date` int(11) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Код:
<?php

/* проверка, есть ли запись в MySQL */
/* таблице с таким id или ее нет */
function searchID($id)
{
$result = mysql_query ("SELECT * FROM `counts` 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 `counts` 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 `counts` 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 `counts` SET `all` = '".$all."',`today` = '".$today."' WHERE `page_id` = '".$id."'");
return $result;
}
/* Запись всех значений "По умолчанию" */
function Default_Write($id)
{
$id = addslashes($id);
$result = mysql_query ("INSERT INTO `counts` ( `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['EZSQL_DB_HOST'], $INFO['EZSQL_DB_USER'], $INFO['EZSQL_DB_PASSWORD']); // Соединение с MySQL
mysql_select_db ($INFO['EZSQL_DB_NAME']); // Выбор базы данных
if (!searchID($unical_page_id_gid)) // существует ли запись с таким id
{
    Default_Write($unical_page_id_gid); // запись всех значений по умолчанию
        define("count", "1");
}
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); // обновим счетчики
}
else // если еще нет
{
    /* обновим счетчики */
    UpdateCounders($unical_page_id_gid, $all, $today);
}
/* устанавливаем константу с текущими значениями счетчиков */
define("count", "$all");
}
mysql_close($link); // Разрываем соединение с MySQL
?>
 
Если я правильно понял проблему и тебе нужна информация о незакодированных URL в записях о счетчиках страниц, то:

1. нужно добавить столбец url в таблицу counts
2. организовать проход по всем url сайта (например, взяв из sitemap) и, находя в таблице counts запись по хешу этой страницы, записывать туда оригинальный URL страницы.
3. если нужен еще и короткий циферный ID для страниц, то просто добавить автоинкриментируемое поле типа int.

P.S.: поправка к коментарию:
Код:
else // если не существует
это ветка "если существует", без НЕ
 
$unical_page_id_gid = md5($_SERVER['REQUEST_URI']); наверное здесь, не нужно шифровать в md5 но тогда длину измени побольше(чем сейчас 32 символа)
 
$unical_page_id_gid = md5($_SERVER['REQUEST_URI']); наверное здесь, не нужно шифровать в md5 но тогда длину измени побольше(чем сейчас 32 символа)
есть ли возможность дешифровать ссылки, которые уже зашифрованные?
 
есть ли возможность дешифровать ссылки, которые уже зашифрованные?
Нет. md5 можно только подобрать перебором значений. Т.е. ты отправляешь значение в md5() смотришь что получилось, и сравниваешь с имеющимся хешем. Только так ты поймешь что зашифровано в хеше.
 
Назад
Сверху