If I understand correctly, you want to filter out requests from download managers or bots and only record the actual user in your database. There are a few methods I can think of to accomplish this:
Filter the User Agent: every request should send a user-agent header, which identifies the browser or software making the request. You could use this method to filter out bots and download managers (if in fact they are using a separate user-agent). Here is an example script that does this.
Use a Cookie: something like this at the top of the page, assuming the download manager shares cookie state with the browser:
if (!isset($_COOKIE['download_check'])) {
setcookie('download_check', '1', 0, '/');
} else {
exit();
}
The script will not do anything after the first time. To allow the user to come back and re-download, just destroy the cookie on any other page.
Redirect with JavaScript or meta-tags: Assuming that the downloader or a bot will not execute JavaScript, check for the existence of some parameter in the query string. If it does not exist, then output a short page with a JavaScript or meta-tag redirect to the same page with the parameter and exit, like this:
if (!isset($_GET['download_check'])) {
echo "<html><script>window.location = 'this_page.php?download_check=1'</script></html>";
exit();
}
I hope that one or more of these methods helps you filter out incorrect requests to your application.