Hãy đăng ký thành viên để có thể dễ dàng trao đổi, giao lưu và chia sẻ về kiến thức đồ họa.
  1. Hãy đăng ký subscribe kênh Youtube mới của Việt Designer tại địa chỉ: Youtube.com/VietDesignerChannel để theo dõi các video về thiết kế đồ họa. Do trước đó kênh cũ bị Youtube quét không rõ lý do, trong thời gian chờ kháng cáo nếu các bạn thấy video trên diễn đàn bị die không xem được thì có thể vào kênh mới để tìm xem video sơ cua nhé.
    Loại bỏ thông báo

Làm thế nào để tạo ra link download file và có token download?

Chủ đề thuộc danh mục 'Hỏi đáp - Thảo luận về web' được đăng bởi Tần Quảng, 10/3/18.

Lượt xem: 4,727

  1. Tần Quảng Mới đăng kí

    Trang web của mình có link đến trang tuỳ chọn khi download dạng ://tênmiền/xxxxx
    và khi download một file nào đó sẽ có dạng ://tênmiền/xxxxx/yyyy
    Trong đó: xxxxx là UID của file ở cột UID trên database.
    yyyy là tên tập tin giống tên gốc khi upload (còn tên file trên host lúc này đã thay đổi khác đi và cũng có dữ liệu trên database nằm ở cột khác, phải cột yyyy).
    Đúng vậy, link download file nó là tĩnh luôn nên thường xuyên bị ăn cắp băng thông, gây tốn nhiều băng thông.
    Và giờ mình lên một ý tưởng như này:
    1. Mình tạo một bảng trên database giả sử tên là `download`. Với các cột 'download_token' , 'fileuid' , 'hethan' , 'filename'.
    2. Sau đó, ở file trang tuỳ chọn khi download, mình sẽ cho tạo:
    $dl_token = md5(time())
    $dl_fid = upl->uid (Lấy dữ liệu uid từ bảng `upl`).
    $expires = time()*60*15 (để token được tạo ra này hết hạn trong 15 phút).
    $dl_fna = upl->name (Lấy dữ liệu tên tập tin từ bảng `upl`). (Đây không phải là tên tập tin giống tên tập tin đang lưu trên host, đây là tên tập tin ban đầu).
    Rồi sau đó import các dữ liệu lên database: $dl_token sẽ được import vào download_token, $dl_fid sẽ được import vào fileuid, $dl_fna sẽ được import vào filename và $expires sẽ được import vào hethan.
    Lúc này, link download sẽ được chuyển thành ://tênmiền/download. php?t=$dl_token&i=$dl_fid&e=$expires&n=$dl_fna
    3. Rồi tiếp theo, tạo một file download. php, file này sẽ check dữ liệu từ sau chữ t, i, n (và dấu =) với dữ liệu trên database, riêng dữ liệu sau chữ e (và dấu =) thì sẽ so sánh dữ liệu đó với time().
    Lúc này sẽ xảy ra một vài trường hợp:
    1. Dữ liệu từ t, i, n đều khớp với dữ liệu trên database, dữ liệu từ e lớn hơn time(): Cho phép download file theo link: ://tênmiền/download. php?t=$dl_token&i=$dl_fid&e=$expires&n=$dl_fna
    2. Dữ liệu từ t, i, n đều khớp với dữ liệu trên database, dữ liệu từ e nhỏ hơn hoặc bằng time(): Hiển thị lỗi: "Link đã hết hạn" và không thể download file theo trường hợp này.
    3. Dữ liệu từ t, i, n 1 trong 3 cái hoặc 2 trong 3 cái hoặc cả 3 đều không khớp với dữ liệu trên database: Hiển thị lỗi: "Link không chính xác" và cũng không thể download file theo trường hợp này.
    KẾT: Đó là toàn bộ ý tưởng của mình nhưng đến giờ vẫn chưa lên thành php và sử dụng thực tế được. Hi vọng có bạn nào có thể bỏ chút thời gian viết hộ mình code.
    Mình xin cảm ơn trước!

    ...
    tranvan.muon thích bài viết này
Từ khóa:

Ủng hộ diễn đàn