10/10/2018, 11:32

Cách lập trình php để gửi mail download phần mềm giới hạn theo IP

Mình đang có vấn đề lớn khi download phần mềm,khách hàng đăng ký tài khoản website bên mình, thanh toán thành công thì tự động gửi mail đến mail khách hàng cung cấp, trong mail có link download phần mềm đó, nhưng mình muốn giới hạn cho người đó download thôi, không muốn người khách hàng gửi link đó cho người khác download được.Mình muốn hạn chế cho mỗi IP download 1 lần thôi,có gửi link cho người khác cũng không down được.Nhưng không biết code sao , mong các bạn giúp đỡ cho giải pháp.
saccalo2 viết 13:48 ngày 10/10/2018
em cũng đang gặp vấn đề này , các pác giúp đỡ
sonnb viết 13:37 ngày 10/10/2018
Do khách hàng đã có tài khoản + thanh toán nên vấn đề khá là đơn giản (theo mình nghĩ).

- Link download sẽ không cố định mà mỗi lần họ muốn down thì vào website nhấn nút "Get download link", khi này sẽ random ra 1 link (ví dụ: download.php?key=***). Lưu key này vào db kèm customer id + thời gian tạo. Key quá 4 - 5 tiếng thì coi như expire.

- Từ việc tạo link như trên thì ta sẽ không cho phép download trực tiếp, do đó ở trang download.php sẽ check session. Đúng customer đó đăng nhập và đúng key đó thì mới cho download.

- Có thể hạn chế số lần tạo link (tùy chọn, tùy nhu cầu).

Cách này có thể hạn chế IDM tự động nếu họ không set thông tin đăng nhập ở IDM. Nếu họ set thông tin đăng nhập ở IDM thì họ vẫn down = IDM được. Tuy nhiên không ảnh hưởng nhiều. Nếu họ gửi cho người khác link này thì họ phải đưa cho người đó cả thông tin đăng nhập.

Chắc là đã đủ đáp ứng nhu cầu của bạn.
lodenvutru viết 13:42 ngày 10/10/2018
có thể minh họa code được không bạn, mình chưa hiểu lắm!
sonnb viết 13:43 ngày 10/10/2018
PHP Code:
//product.php
//Tạo link download.
$key md5(time()); // Tạo random key.
$db->saveToDb($customer_id$product_id$keytime()); //Lưu key, customer id, product id và key vào db.

//Trang download.php
if (!$user->logged-in()) //Nếu user chưa đăng nhập
{
    echo 
'You need login to download our products';
}
else
{
    
$key $_GET***91;'key'***93;; //lấy var key;
    
$key_expire strtotime('+4 hours'); //thời gian 4 tiếng
    //Lấy thông tin key từ db;
    
$data $db->query("SELECT * FROM `product_download_link` WHERE key='".$key."' AND key_time < ".$key_expire." LIMIT 0,1");
    if (!
$data)
    {
        
//không tồn tại key này hoặc key đã expire
    
}
    else
    {
        if (
$data->customer_id != $user->customer_id)
        {
            
//Key này ko phù hợp với customer này
        
}
        else
        {
            
//Xử lý cho phép download
        
}
    }

trinhdiep viết 13:47 ngày 10/10/2018
thay vi gui link down. sao nguoi ta khong gui file luon vay
trinhdiep viết 13:33 ngày 10/10/2018
Được gửi bởi sonnb
Do khách hàng đã có tài khoản + thanh toán nên vấn đề khá là đơn giản (theo mình nghĩ).

- Link download sẽ không cố định mà mỗi lần họ muốn down thì vào website nhấn nút "Get download link", khi này sẽ random ra 1 link (ví dụ: download.php?key=***). Lưu key này vào db kèm customer id + thời gian tạo. Key quá 4 - 5 tiếng thì coi như expire.

- Từ việc tạo link như trên thì ta sẽ không cho phép download trực tiếp, do đó ở trang download.php sẽ check session. Đúng customer đó đăng nhập và đúng key đó thì mới cho download.

- Có thể hạn chế số lần tạo link (tùy chọn, tùy nhu cầu).

Cách này có thể hạn chế IDM tự động nếu họ không set thông tin đăng nhập ở IDM. Nếu họ set thông tin đăng nhập ở IDM thì họ vẫn down = IDM được. Tuy nhiên không ảnh hưởng nhiều. Nếu họ gửi cho người khác link này thì họ phải đưa cho người đó cả thông tin đăng nhập.

Chắc là đã đủ đáp ứng nhu cầu của bạn.
cách này thì phải đăng nhập mỗi lần down. nếu người ta đã trả tiền, gửi link down vào email. lại còn bắt người ta đăng nhập mới down được.
sonnb viết 13:46 ngày 10/10/2018
Được gửi bởi trinhdiep
cách này thì phải đăng nhập mỗi lần down. nếu người ta đã trả tiền, gửi link down vào email. lại còn bắt người ta đăng nhập mới down được.
Mình nêu ra là cách đầy đủ. Còn muốn dùng đến đâu thì tự người sử dụng phải biết vận dụng chứ. Đâu phải nói ra là đáp ứng được nhiều nhu cầu?
Bài liên quan
0