- Php mysql download file from url to database update#
- Php mysql download file from url to database code#
Php mysql download file from url to database code#
In the above code first i check the file using checkId() function then i check also if their are a file url for this device IP that it is not expired using getFileUrl() function in this snippet: Please wait until we generate your download link Now open download.php and insert this code In this simple script i iterate over the files returned by getFiles() function and display download links, in each link the user will be redirected to. Id ?>" class="btn btn-success center-block">Download So open index.php and modify it with this code: The first thing we need to do is to display the files to user so it can select a file and download it. The file contains some helper functions that we will need across the project like getFiles() function for displaying the files, and getFile($id) to retrieve a file by id, etc. The includes.php contains database config and some constants such as the expiration time and the files location and also i have added the code that connects to the database using PHP PDO. $sql = "INSERT INTO file_urls (file_id, token_identifier, time_before_expire, ip_address) VALUES (:file_id, :token_identifier, :time_before_expire, :ip_address)" 'time_before_expire' => (time() + TIME_BEFORE_EXPIRE*60*60), // 8 hours later Return substr(str_shuffle(str_repeat($x='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length/strlen($x)) )),1,$length) $query = $db_connection->prepare("SELECT * FROM files where id=''")
$results = $query->setFetchMode(PDO::FETCH_OBJ) $query = $db_connection->prepare("SELECT * FROM files") SetAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) Let’s open the includes.php and insert the below code: The token_identifier must be unique per download.Ĭreate a new folder in your server root directory name it whatever you want, in my case i called it downloader with those files:īefore starting to create the actual code try to add some files in the files/ directory and also insert them into the database like this: time_before_expire field this is the expiration time for the url after that time that url is useless and inaccessible. The file_urls table contains the file_id, token_identifier and is unique, time_before_expire and the ip_address. I assume that the files stored in a fixed location in the project. ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8Īs you see the files table only holds the filename and created_at fields.
Php mysql download file from url to database update#
UNIQUE KEY `token_identifier` (`token_identifier`),ĬONSTRAINT `file_urls_ibfk_1` FOREIGN KEY (`file_id`) REFERENCES `files` (`id`) ON DELETE CASCADE ON UPDATE CASCADE `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `time_before_expire` varchar(50) NOT NULL, `token_identifier` varchar(400) NOT NULL, ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, Let’s create a new database and name it whatever you want then execute those queries: The first table is the table that holds the actual file names, and the second table is a table that holds the dynamic urls. In this tutorial i will create a simple php script to show the process of dynamic url generation, we will create two tables. To download the file the system generate a dynamic url for that file and for that user.ĭynamic urls takes the form of a normal link and ends and with a long token string, this token is the download identifier and this marks the url as dynamic and it has an expiration time and in some websites is attached with the device IP. Imagine you own a website that sell digital books, of course the process is the user pay for the book first then he can download the file by sending some kind of email message with the download link.
This helps protecting the file sources from being stolen as this may be a paid file and also decrease the heavy load on the server. Dynamic urls is a url that changed every time when the user want to download a certain file, instead of giving the user the actual file path.