Hai bisogno di consigli su come abbreviare il mio URL personalizzato?

1

A causa di alcuni problemi con altri accorciatori come goo.gl (disabilitando i miei link per esempio) voglio creare il mio URL shortener.

Sto cercando di avere una singola tabella che conterrà le seguenti colonne: -

links_id - autoincrement id
url - the actual full URL
abbreviation - the shortened version 

In poche parole, quando un nuovo collegamento viene aggiunto alla tabella, inserirò l'URL nella tabella e fornirò un valore abbreviato unico, ovviamente se viene trovato un URL esistente non sarà necessario aggiungere nuovamente il URL.

La mia domanda è qual è il modo migliore per generare tali abbreviazioni che a) sono veloci da produrre e sono il più unico possibile e non sono facili da indovinare. Inoltre, il numero di personaggi che la gente raccomanderebbe, ad esempio se avessi un'abbreviazione di 6 caratteri, quante combinazioni uniche mi fornirebbero in base al fatto che sto utilizzando i caratteri standard usati da altri URL shortener.

Userò PHP / MySQL, qualsiasi consiglio sarebbe apprezzato.

    
posta Zabs 06.01.2017 - 13:06
fonte

2 risposte

7

Gli URL shortner non usano gli hash per generare l'URL abbreviato. Gli hash non sono (per il loro stesso design) unici.

Un modo comune per codificare gli URL è semplicemente prendere il valore links_id e convertirlo in base 62 (ovvero az, AZ e 0-9, che fornisce 62 valori per" cifra ") e lo usano come URL.

    
risposta data 06.01.2017 - 13:56
fonte
3

L'idea di creare un abbreviazione URL è usare stringhe brevi per abbreviare l'URL. Le funzioni di hashing più comuni creano una lunga stringa decimale esadecimale, che è più lunga del necessario, anche abbreviata. Vorrei andare con il seguente disegno:

  • Interrogare il database, se l'URL è già esistente, restituire la stringa breve salvata
  • Crea un numero casuale la dimensione approssimativa su quanti URL ti aspetteresti nel tuo database
  • Converti il numero in una stringa base64 o base36 (usando az invece af, es. vedi la funzione base_convert per php), non dimenticare sostituisce i caratteri specifici dell'URL su una codifica base64
  • Esegui una query sul tuo database per testare, se la stringa casuale è già nel tuo database, se sì, ripeti la generazione
  • Salva il collegamento nel tuo database con la stringa breve casuale generata
risposta data 06.01.2017 - 13:52
fonte

Leggi altre domande sui tag