Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Короткий URL 
V
    Опции темы
Gold Dragon
Дата 5.8.2013, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(krundetz @  5.8.2013,  10:33 Найти цитируемый пост)
а можно беле четкое раскрытие, а то я что то не понимаю зачем заморачиваться с работоспособностью коротких урлов со сторонних ресурсов если база будет чиститься? 

Да не будет она чистится ... это на случай если вдруг очистится (ну или просто испортится). Вот и хочется чтобы ссылку можно было восстановить


Sanchezzz, ну это понятно smile


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Sanchezzz
Дата 5.8.2013, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Ту так как тебе вариант, а то мне то любопытно)


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Чучмек
Дата 5.8.2013, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 4
Всего: 41



Sanchezzz, это же не хеш, это перевод индекса в 62ричную систему. И совпадений понятное дело не будет. 
Но это функция от индекса, а не от ссылки.
Да и если добавь два символа  до 64ричной,  преобразование можно сделать на порядок быстрей.


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Gold Dragon
Дата 5.8.2013, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Sanchezzz, это всё работает и это сокращает код, но как правильно сказал Чучмек, это не решает проблему.. Преобразовывать нужно URL а не идентификатор smile

PS
кстати, не  уверен что разный регистр букв это разные адреса


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 5.8.2013, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



наверное решить мою задачу не получится... Или адрес получается длинным или правило не получается..

Как тут предложили, можно просто преобразвоть в md5 и взять только часть строки.. конечно шанс коллизии возможен, но очень маловероятен smile 

Хотя можно пойти ещё дальше... 
- получить MD5()
- делим на 4
- получаем таблицу из настоящего адреса и 4-х кусков md5
В принципе можно использовать любую часть в адресе, а если вдруг появится дубликат, просто взять за основу другую часть



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Sanchezzz
Дата 5.8.2013, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Тоже самое получается что и я предложил.
Восстановить ссылку исходную по хешу не получится, так зачем мудрить если несколько постами верху готовое.
случаи когда упретесь в лимит числа в PHP можно пойти путем добавления прификса к сылке как на ютубе 
w1<разделитель>sssss
я думаю там похожий алгоритм используется. 
 




--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Gold Dragon
Дата 5.8.2013, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(Sanchezzz @  5.8.2013,  14:14 Найти цитируемый пост)
Тоже самое получается что и я предложил.
Восстановить ссылку исходную по хешу не получится, так зачем мудрить если несколько постами верху готовое.
что-то ты не до понил... 
никто не собирается восстанавливать ссылку.. Идентификатор при новом проходе по ссылкам может быть (а так и будет) разным у одной и тойже ссылки, т.к. всё зависит от порядка записи ссылко в базу.. А вот хэш всегда один и тот же получится.. 



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Чучмек
Дата 5.8.2013, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 4
Всего: 41



Код

function urlHash($url,$length)
  {
  $h = base64_encode(md5($url,true));
  return substr($h,0,min($length,22));
  }

echo urlHash('http://yandex.ru/',8);



--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Gold Dragon
Дата 5.8.2013, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Чучмек, интересное решение!
но(!) попробуй
Код

echo urlHash('http://jlotos.qqq/administrator/index2.php?option=com_elrte',8);


ps
как велика вероятность коллизии?

Это сообщение отредактировал(а) Gold Dragon - 5.8.2013, 15:59


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
krundetz
Дата 7.8.2013, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(Gold Dragon @  5.8.2013,  11:04 Найти цитируемый пост)
Да не будет она чистится ... это на случай если вдруг очистится (ну или просто испортится). Вот и хочется чтобы ссылку можно было восстановить

Может тогда проще настроить правильный бэкап БД?


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
Gold Dragon
Дата 7.8.2013, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Друзья, есть задача, хочется услышать ответ smile А то получается, человек спрашивает как починить термостат на "жигулях", а ему отвечают, купи "мерседес"  smile 

krundetz, конечно ты прав и всё это заложено.. Но хочется иметь и такую страховку.. Вот представь сайт висит в сети лет 5, куча ссылок на его материалы в Инете. А тут бах (ну ведь всё бывает) и пути поменялись.. И теперь в интернете куча 404. А как отреагируют на это Поисковики? Однозначно "понижением рейтигна" smile


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
AVA12
Дата 7.8.2013, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 4.5.2008

Репутация: 0
Всего: 4



Что-то странное тут творится. Arantir уже давно указал красивое, надежное и эффективное решение проблемы, не требующее БД. Но автор темы продолжает проектировать кривой костыль. Зачем? Решение непонятно? Или отпугивает необходимость дополнительных преобразований сложнее, чем применение стандартной хэш-функции? Ну так эти трудности вполне решаемы, было бы желание.
PM ICQ Jabber   Вверх
Gold Dragon
Дата 7.8.2013, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Уважаемы AVA12, видимо у вас не так много опыта в построении ЧПУ в CMS. Если кратко, то.... если не использовать базу данных (и кеширование), а использовать "преобразование на ходу", то сайт в один прекрасный момент умрёт от увеличении посещяаемости и количества ссылок на странице

Что касается решения Arantir`а, то он привёл преобразование только на основе тех примеров которые я дал smile Да и то не доработаное и применимое только для статичных сайтов.

Но для CMS это ничто: ссылки могут быть любые с любым набором и с любым количеством как символов так значений. При этом адрес
Цитата

/article/content/5/31/1
это уже ЧПУ-ссылка, преобразованная по определённому правилу(!)
реальная типа таких
Цитата

_http://joostina-cms.ru/index.php?option=com_boss&task=show_content&contentid=31&catid=1&directory=5


А вот хэш-функция даёт нам гарантию что одинаковых сокращений не будет и что преобразование всегда будет одним и тем же. Но 16 знаков - это не "короткая ссылка" smile Вот и необходимо решить на сколько нужно сократить полученное значение хэша, чтобы найти грань между количеством коллизий и допустимыми дубликатами ссылок


Это сообщение отредактировал(а) Gold Dragon - 7.8.2013, 12:37


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Arantir
Дата 7.8.2013, 13:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



Что мешает 
Цитата
по определённому правилу
 делать из этого 
Код

http://joostina-cms.ru/index.php?option=com_boss&task=show_content&contentid=31&catid=1&directory=5
 вот это 
Цитата
/R500u01
 вместо этого 
Цитата
/article/content/5/31/1
?
Правило простое - меньше букв (вместо длинных слов) и короче цифры. Можно еще слеши вырезать.

И, вообще... в конце-то концов... ничего не мешает эти же /R500u01 хранить в базе данных. Я привел лишь способ преобразования. Аналог хеш-функции. Ни о каком "преобразовании на ходу" я не говорил. Я лишь говорил об обратимости такого способа сжатия.

Я привел решение в ответ на вот это 
Цитата(Gold Dragon @  30.7.2013,  15:10 Найти цитируемый пост)
 Вот хочется придумать какое-то правило..

и на это 
Цитата(Gold Dragon @  30.7.2013,  19:11 Найти цитируемый пост)
да и коллизии не было
, что, кстати, не противоречит этому
Цитата(Gold Dragon @  30.7.2013,  15:10 Найти цитируемый пост)
Самый простой способ, это просто генерить ссылки и заносить в базу..
, и плюс ко всему
Цитата(Gold Dragon @  5.8.2013,  10:04 Найти цитируемый пост)
если вдруг очистится
, то все ссылки можно заново сгенерировать по тому же несложному правилу и они будут точно такими, как до "если вдруг".


Представьте себе свой вариант с MD5 и хранением в базе данных, но только замените MD5 на конкретные правила преобразования. Получится то же самое, но только без коллизий и проблемы потери базы данных.


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Gold Dragon
Дата 7.8.2013, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Arantir, я не про твой код говорил, а отвечал AVA12  smile  (это про "преобразовании на ходу")

что касается твоего решения, то мы просто не можем знать ЧТО заменять на R, сколько таких ЧТО есть и ещё будет. С числами то всё понятно, хотя есть и такие адреса
Цитата

/content/allview/20130622/8462/45/12.html


Понимаешь, что твой вариант наверное идеальное решение для сайтов, где уже известны или возможно узнать все URL, ну или URL имеют очень чёткий формат

Это сообщение отредактировал(а) Gold Dragon - 7.8.2013, 13:29


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1406 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.