2010-08-15 30 views
12

Làm cách nào để URL shortener's như bit.ly tính toán một khóa ngẫu nhiên cho mỗi liên kết? Tôi cần biết thuật toán nào để tạo thuật toán của riêng mình?Trình rút gọn URL tính toán khóa URL như thế nào? Họ làm việc như thế nào?

+1

Câu hỏi hay !!! – Topera

+3

Xem http://stackoverflow.com/questions/742013/how-to-code-a-url-shortener cho một số giải pháp có thể – ChrisF

+0

Bạn chưa đọc kỹ thuật (http://en.wikipedia.org/wiki/URL_shortening #Techniques)? Có điều gì đó mà bạn không hiểu? Xem blog của Jeff quá: http://www.codinghorror.com/blog/2007/08/url-shortening-hashes-in-practice.html – dirkgently

Trả lời

2

Cho đến nay tôi tìm thấy mã từ 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; 
} 

và câu trả lời phức tạp hơn bởi Marcel J. được đề cập ở trên.

1

Có thể chúng lưu trữ nó trong cơ sở dữ liệu và chỉ cung cấp cho bạn một id liên kết. Khi bạn truy vấn khóa này, họ tìm trong cơ sở dữ liệu của họ và chuyển tiếp bạn đến liên kết thực được lưu trữ. Để mã hóa id, chẳng hạn như base64 (hoặc tương tự) có thể được sử dụng.

+0

Đó là base64 buddy :) – Topera

+0

rõ ràng là anh ấy biết rằng vì đó là những gì anh ta liên kết với – Adam

+0

liên kết đến phiên bản tiếng Anh sẽ được tốt đẹp mặc dù – Adam

2

Tôi nghĩ rằng họ KHÔNG ngẫu nhiên một khoá mới và kiểm tra nếu tồn tại trong cơ sở dữ liệu, bởi vì nó của nó chậm hơn so với chỉ sử dụng một số sequencial và áp dụng một số criptography thuật toán để chuyển đổi id sequencial thành một chuỗi UNIQUE.

Ex:

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

URL để sử dụng: http://bit.ly/161Llz

Tks: mykhal và nick johnson

+1

.. và sau đó họ hy vọng sẽ không có va chạm :) – mykhal

+0

Mật mã không liên quan gì đến điều này. –

+0

"Chậm hơn"? Lửa đâu rồi? – xyres

0

Họ có khả năng lưu trữ nó trong cơ sở dữ liệu và chỉ tạo khóa ngẫu nhiên. Tôi giả định điều này bởi vì bạn có thể tạo ra chìa khóa của riêng bạn, và nếu họ chỉ giải mã nó, bạn sẽ không thể tự mình chọn nó.

Để biết cách thực hiện, bạn chỉ có thể tạo cơ sở dữ liệu trong mySQL và giữ nó ở vị trí chính và đầy đủ. Chỉ cần tìm kiếm nó cho khóa và sau đó chuyển hướng người dùng đến trang web đầy đủ.

+0

Cảm ơn, nhưng tôi biết cách lưu trữ khóa - câu hỏi của tôi là làm cách nào để "tính toán một khóa ngẫu nhiên cho mỗi liên kết?" – Xeoncross

+0

Có rất nhiều cách. Họ chỉ có thể làm một cái gì đó đơn giản như đưa ra một vài con số ngẫu nhiên, và sau đó chỉ định một chữ cái cho mỗi số và gắn chúng lại với nhau. Thực tế là họ sử dụng cơ sở dữ liệu để lưu trữ và tìm kiếm chúng có nghĩa là họ có thể sử dụng bất kỳ phương pháp nào họ muốn và thuật toán của họ không phải tính đến URL thực tế – Parker

Các vấn đề liên quan