![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 0 Dołączył: 24.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Chciałbym napisać sobie stronę do skracania linków (podobną do Tinyurl.pl), ale nie jestem pewien algorytmu.
Weźmy taki adres: http://adres.com/index.php?v=1111111111111...222222222222222 Tinyurl zamienia go na: http://www.tinyurl.pl?pPGv05sf, tak na prawdę na pPGv05sf bo http://www.tinyurl.pl? jest stałe w każdym zamienionym adresie. Domyślam się, że w bazie mam tabele z dwoma kolumnami: pełny adres i skrócony adres. Pytanie jest jak skrócić adres, żeby skrót pozostał unikalny? md5 i sha1 są za długie. Ale połowa z md5 to właśnie 8 czyli tyle ile jest w Tinyurl. Czy wystarczy wygenerować dla adresu sumę md5 i wybrać z niej pierwszą połowę znaków? Co jeśli połowy sum dwóch różnych adresów będą takie same? Sprawdzać w tabeli i ewentualnie dodawać kolejne znaki z sumy? Czy warto się pokusić na jeszcze krótsze adresy np 6pierwszych znaków z md5? Może lepiej użyć fragmentu sha1 albo innego rozwiązania? I jeszcze kwestia przekierowania. User podaje adres: http://www.tinyurl.pl?pPGv05sf skrypcik pobiera z bazy pełny url. I trzeba go przekierować, czy header() wystarczy? Chciałbym uniknąć ostrzeżeń w przeglądarkach, że dochodzi do przekierowania. Zależy mi tez na wydajności. Czy to będzie dobrze dobrze działać? Może coś trzeba poprawić? pozdro |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
Najprostsze skracanie to tabela id , url
potem strona.pl?id=id_z_bazy i pobierasz url where id=(int)$_GET['id'] na koniec nawet zwykłe header('location: '.$url); id w bazie oczywiście auto_increment aby zachować unikalność. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 14:00 |