![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
Да не будет она чистится ... это на случай если вдруг очистится (ну или просто испортится). Вот и хочется чтобы ссылку можно было восстановить Sanchezzz, ну это понятно ![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
Ту так как тебе вариант, а то мне то любопытно)
-------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 4 Всего: 41 |
Sanchezzz, это же не хеш, это перевод индекса в 62ричную систему. И совпадений понятное дело не будет.
Но это функция от индекса, а не от ссылки. Да и если добавь два символа до 64ричной, преобразование можно сделать на порядок быстрей. -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
Sanchezzz, это всё работает и это сокращает код, но как правильно сказал Чучмек, это не решает проблему.. Преобразовывать нужно URL а не идентификатор
![]() PS кстати, не уверен что разный регистр букв это разные адреса -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
наверное решить мою задачу не получится... Или адрес получается длинным или правило не получается..
Как тут предложили, можно просто преобразвоть в md5 и взять только часть строки.. конечно шанс коллизии возможен, но очень маловероятен ![]() Хотя можно пойти ещё дальше... - получить MD5() - делим на 4 - получаем таблицу из настоящего адреса и 4-х кусков md5 В принципе можно использовать любую часть в адресе, а если вдруг появится дубликат, просто взять за основу другую часть -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
Тоже самое получается что и я предложил.
Восстановить ссылку исходную по хешу не получится, так зачем мудрить если несколько постами верху готовое. случаи когда упретесь в лимит числа в PHP можно пойти путем добавления прификса к сылке как на ютубе w1<разделитель>sssss я думаю там похожий алгоритм используется. -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
никто не собирается восстанавливать ссылку.. Идентификатор при новом проходе по ссылкам может быть (а так и будет) разным у одной и тойже ссылки, т.к. всё зависит от порядка записи ссылко в базу.. А вот хэш всегда один и тот же получится.. -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 4 Всего: 41 |
-------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
Чучмек, интересное решение!
но(!) попробуй
ps как велика вероятность коллизии? Это сообщение отредактировал(а) Gold Dragon - 5.8.2013, 15:59 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 20 Всего: 69 |
||||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
Друзья, есть задача, хочется услышать ответ
![]() ![]() krundetz, конечно ты прав и всё это заложено.. Но хочется иметь и такую страховку.. Вот представь сайт висит в сети лет 5, куча ссылок на его материалы в Инете. А тут бах (ну ведь всё бывает) и пути поменялись.. И теперь в интернете куча 404. А как отреагируют на это Поисковики? Однозначно "понижением рейтигна" ![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
AVA12 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 4.5.2008 Репутация: 0 Всего: 4 |
Что-то странное тут творится. Arantir уже давно указал красивое, надежное и эффективное решение проблемы, не требующее БД. Но автор темы продолжает проектировать кривой костыль. Зачем? Решение непонятно? Или отпугивает необходимость дополнительных преобразований сложнее, чем применение стандартной хэш-функции? Ну так эти трудности вполне решаемы, было бы желание.
|
|||
|
||||
Gold Dragon |
|
||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
Уважаемы AVA12, видимо у вас не так много опыта в построении ЧПУ в CMS. Если кратко, то.... если не использовать базу данных (и кеширование), а использовать "преобразование на ходу", то сайт в один прекрасный момент умрёт от увеличении посещяаемости и количества ссылок на странице
Что касается решения Arantir`а, то он привёл преобразование только на основе тех примеров которые я дал ![]() Но для CMS это ничто: ссылки могут быть любые с любым набором и с любым количеством как символов так значений. При этом адрес
реальная типа таких
А вот хэш-функция даёт нам гарантию что одинаковых сокращений не будет и что преобразование всегда будет одним и тем же. Но 16 знаков - это не "короткая ссылка" ![]() Это сообщение отредактировал(а) Gold Dragon - 7.8.2013, 12:37 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||
|
|||||
Arantir |
|
||||||||||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Что мешает
Правило простое - меньше букв (вместо длинных слов) и короче цифры. Можно еще слеши вырезать. И, вообще... в конце-то концов... ничего не мешает эти же /R500u01 хранить в базе данных. Я привел лишь способ преобразования. Аналог хеш-функции. Ни о каком "преобразовании на ходу" я не говорил. Я лишь говорил об обратимости такого способа сжатия. Я привел решение в ответ на вот это и на это , что, кстати, не противоречит этому
, то все ссылки можно заново сгенерировать по тому же несложному правилу и они будут точно такими, как до "если вдруг". Представьте себе свой вариант с MD5 и хранением в базе данных, но только замените MD5 на конкретные правила преобразования. Получится то же самое, но только без коллизий и проблемы потери базы данных. -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
||||||||||
|
|||||||||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
Arantir, я не про твой код говорил, а отвечал AVA12
![]() что касается твоего решения, то мы просто не можем знать ЧТО заменять на R, сколько таких ЧТО есть и ещё будет. С числами то всё понятно, хотя есть и такие адреса
Понимаешь, что твой вариант наверное идеальное решение для сайтов, где уже известны или возможно узнать все URL, ну или URL имеют очень чёткий формат Это сообщение отредактировал(а) Gold Dragon - 7.8.2013, 13:29 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |