2010-08-15 8 views
12

In che modo URL shortener's come bit.ly calcolare una chiave casuale per ogni collegamento? Quale algoritmo dovrei sapere per creare il mio?In che modo l'accorciatore URL calcola la chiave URL? Come funzionano?

+1

Buona domanda !!! – Topera

+3

Vedere http://stackoverflow.com/questions/742013/how-to-code-a-url-shortener per alcune possibili soluzioni – ChrisF

+0

Non hai letto le tecniche (http://en.wikipedia.org/wiki/URL_shortening #Techniques) sezione? C'è qualcosa lì che non capisci? Vedi anche il blog di Jeff: http://www.codinghorror.com/blog/2007/08/url-shortening-hashes-in-practice.html – dirkgently

risposta

2

Finora ho trovato il codice 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; 
} 

e la risposta più complessa entro il Marcel J. menzionato sopra.

1

Forse lo memorizzano nel database e ti danno un id di collegamento. Quando si interroga questa chiave, vengono visualizzati nel loro database e inoltrati al collegamento reale memorizzato. Per codificare l'id potrebbe essere usato qualcosa come base64 (o simile).

+0

È l'amico di base64 – Topera

+0

beh ovviamente lui sapeva che dal momento che è quello che ha collegato a – Adam

+0

il collegamento alla versione inglese sarebbe stato bello anche se – Adam

2

Penso che DO NOT casuale una nuova chiave e controlla se esiste nel database, perché la sua più lento di appena usare un numero sequenziale e applicare alcune Crittografia algoritmo per convertire sequenziale id per una stringa univoca.

Es:

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

URL da utilizzare: http://bit.ly/161Llz

Tks: mykhal e Nick Johnson

+1

.. e poi sperano che non ci sia alcuna collisione :) – mykhal

+0

La crittografia non ha nulla a che fare con questo. –

+0

"Più lento"? Dov'è il fuoco? – xyres

0

Probabilmente lo memorizzano in un database e generano la chiave casualmente. Presumo questo perché puoi creare la tua chiave e, se la decodifica, non potresti sceglierla da sola.

Per quanto riguarda come farlo, è sufficiente creare un database in MySQL e tenere la chiave e il sito completo. Basta cercarlo per la chiave e quindi reindirizzare l'utente sul sito completo.

+0

Grazie, ma so come memorizzare la chiave - la mia domanda è: come fanno a "calcolare una chiave casuale per ogni collegamento?" – Xeoncross

+0

Ci sono molti modi. Potrebbero semplicemente fare qualcosa di così semplice come trovare alcuni numeri casuali, quindi assegnare una lettera per ogni numero e incollarli tutti insieme. Il fatto di utilizzare un database per archiviarli e cercarli significa che possono utilizzare qualsiasi metodo che desiderano e che il loro algoritmo non deve prendere in considerazione l'URL effettivo – Parker

Problemi correlati