Как создать уникальные переменные URL, которые соответствуют записи db?

Я хочу иметь возможность генерировать URL-переменные следующим образом:

http://example.com/195yq http://example.com/195yp http://example.com/195yg http://example.com/195yf 

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

Как я могу это сделать? Каков наилучший способ сделать это? Существуют ли какие-либо существующие классы, которые я могу использовать?

Спасибо всем

В принципе, вам нужна хеш-функция какого-то типа.

Это может быть функция SHA-1, функция MD5 (как altCogito) или использование других данных, которые у вас есть в записи и их кодировка.

Сколько записей, по вашему мнению, у вас будет? Будьте осторожны при выборе решения, поскольку хеш-функция должна быть достаточно большой, чтобы покрыть вас хорошо, но слишком большой, и вы создаете большую базу данных, чем вам нужно. Я использовал SHA-1 и обрезал до 64 или 32 бит, в зависимости от необходимости.

Кроме того, посмотрите REST. Учтите, что URL-адрес может быть не таким загадочным …

Это можно сделать довольно просто несколькими способами:

  • Используйте хэш, например MD5 . (будет длинным)
  • Base-64 кодирует определенный идентификатор или часть данных

Если вы спрашиваете, есть ли что-либо, что делает это уже с записями MySQL, я не уверен, что вы найдете что-то по-разному, данные действительно, действительно концептуально далеки от URL-адресов на вашем веб-сайте, даже в таких рамках, как Grails. Большинство из них даже не пытались обернуть функциональность интерфейса и доступа к данным в единый кусок.

В каком контексте вы будете использовать это? Почему бы просто не перечислить переменные post? Это гораздо более безопасно и аккуратно. Вы по-прежнему будете выполнять число в URL-адресе, таком как id = 195yq, и есть способ скрыть их, настроив файл php.ini.

Надеюсь, это поможет вам.

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

В примерах, которые вы указали, похоже, что вы кодируете числовой первичный ключ base-64. Вот как я это сделал и делал это в прошлом, но я не уверен, что это лучше, чем передавать идентификатор в ясном виде, потому что декодирование base-64 тривиально.