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.
Bài liên quan
- 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.
//product.php
//Tạo link download.
$key = md5(time()); // Tạo random key.
$db->saveToDb($customer_id, $product_id, $key, time()); //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
}
}
}