Я думаю, что вы пытаетесь избежать принуждения пользователя к регистрации на вашем сайте, в то время как вы пытаетесь отслеживать пропускную способность на каждого посетителя с непрактичными обычными способами (куки, ip ...). Итак, лучший способ (на мой взгляд, конечно, есть много улучшенных решений), это сделать простую регистрационную форму, скажем, имя, пароль и адрес электронной почты, добавить систему активации для каждого электронного письма, чтобы защитить ваш сайт от пользователя, теперь каждого пользователя залогинившись и попытавшись загрузить файл, вы обрабатываете его запрос в следующих шагах:
1) запрос пользователя на имя файла .pdf (проверьте его наличие и размер (важно)).
2) проверить пропускную способность пользователя:
$query = sql_query("SELECT Bandwidth, LastDownload FROM Users, Stats WHERE USER_ID=5");
$result = sql_fetch($query);
if ($result['Bandwidth'] < 50M)
showDownloadLink();
else if($result['LastDownload'] - currentTime() !=0)
echo "please wait to the next 24h";
База данных должна быть такой:
Пользователи:
ID_U int(key, auto increment), Name varchar(25), email varchar(255), password varchar(32), Bandwith float
Статистика:
ID_S int(key, auto increment), LastDownload time, ID_U integer
Примечание:
Каждый раз, когда пользователь загружает файл, вы обновляете строку Bandwidth для нужного пользователя, чтобы позже вы могли проверить, достигает ли конкретный пользователь своего предела или нет. Вы также должны сбросить его после каждых 24 часов.
Это общее решение, и многие считают, что необходимо проверять, например, пропускная способность счетчика должна сбрасываться каждые 24 часа.