Я хочу иметь возможность генерировать 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-адрес может быть не таким загадочным …
Это можно сделать довольно просто несколькими способами:
Если вы спрашиваете, есть ли что-либо, что делает это уже с записями MySQL, я не уверен, что вы найдете что-то по-разному, данные действительно, действительно концептуально далеки от URL-адресов на вашем веб-сайте, даже в таких рамках, как Grails. Большинство из них даже не пытались обернуть функциональность интерфейса и доступа к данным в единый кусок.
В каком контексте вы будете использовать это? Почему бы просто не перечислить переменные post? Это гораздо более безопасно и аккуратно. Вы по-прежнему будете выполнять число в URL-адресе, таком как id = 195yq, и есть способ скрыть их, настроив файл php.ini.
Надеюсь, это поможет вам.
Пожалуйста, имейте это в виду. Когда вы передаете переменные в адресной строке, кому-то легко изменить эту переменную и получить доступ к информации, которую вы, возможно, не захотите получить.
В примерах, которые вы указали, похоже, что вы кодируете числовой первичный ключ base-64. Вот как я это сделал и делал это в прошлом, но я не уверен, что это лучше, чем передавать идентификатор в ясном виде, потому что декодирование base-64 тривиально.