Как укорачиватель URL рассчитывает ключ URL?Как они работают? - PullRequest
12 голосов
/ 16 августа 2010

Как сокращение URL как bit.ly вычисляет случайный ключ для каждой ссылки?Какой алгоритм мне нужно знать, чтобы создать свой собственный?

Ответы [ 4 ]

2 голосов
/ 16 августа 2010

Я думаю, они НЕ случайно выбирают новый ключ и проверяют, существует ли в базе данных, потому что он медленнее, чем просто использование порядкового номера и применение некоторого криптографического алгоритма для преобразования последовательногоидентификатор уникальной строки.

Пример:

idUrl = 1003;
urlCode = doSomething(idUrl); // 161Llz

Используемый URL: http://bit.ly/161Llz

Tks: mykhal и Ник Джонсон

2 голосов
/ 16 августа 2010

Пока что я нашел код от http://briancray.com/2009/08/26/free-php-url-shortener-script/

function getShortenedURLFromID ($integer, $base = ALLOWED_CHARS)
{
    $length = strlen($base);
    while($integer > $length - 1)
    {
        $out = $base[fmod($integer, $length)] . $out;
        $integer = floor( $integer / $length );
    }
    return $base[$integer] . $out;
}

и более сложный ответ Марселя Дж. , упомянутого выше.

1 голос
/ 16 августа 2010

Может быть, они хранят его в базе данных и просто дают вам идентификатор ссылки. Когда вы запрашиваете этот ключ, они заглядывают в свою базу данных и перенаправляют вас на сохраненную реальную ссылку. Для кодирования идентификатора может использоваться что-то вроде base64 (или аналогичное).

0 голосов
/ 16 августа 2010

Скорее всего, они хранят его в базе данных и просто генерируют ключ случайным образом.Я предполагаю, что это потому, что вы можете создать свой собственный ключ, и если бы они просто расшифровали его, вы не смогли бы выбрать его самостоятельно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...