PDA

View Full Version : سوال: تولید لینک دانلود موقت در php



sabafarhadi
دوشنبه 13 آذر 1391, 17:22 عصر
من توی سایت webvamp این برنامه رو پیدا کردم که لینک موقتی دانلود تولید می کنه اما نمیدونم چطوری ازش استفاده کنم یعنی چطوری اون فایل رو می تونم دانلود کنم
این هم کدش
SQL



CREATE TABLE downloads ( downloadkey varchar(32) NOT NULL unique, file varchar(255) NOT NULL default '', downloads int UNSIGNED NOT NULL default '0', expires int UNSIGNED NOT NULL default '0' );






//The directory where the download files are kept - keep outside of the web document root $strDownloadFolder = "/downloads/"; //If you can download a file more than once $boolAllowMultipleDownload = 0; //connect to the DB $resDB = mysql_connect("localhost", "username", "thisismypassword"); mysql_select_db("database", $resDB); if(!empty($_GET['key'])){ //check the DB for the key $resCheck = mysql_query("SELECT * FROM downloads WHERE downloadkey = '".mysql_real_escape_string($_GET['key'])."' LIMIT 1"); $arrCheck = mysql_fetch_assoc($resCheck); if(!empty($arrCheck['file'])){ //check that the download time hasnt expired if($arrCheck['expires']>=time()){ if(!$arrCheck['downloads'] OR $boolAllowMultipleDownload){ //everything is hunky dory - check the file exists and then let the user download it $strDownload = $strDownloadFolder.$arrCheck['file']; if(file_exists($strDownload)){ //get the file content $strFile = file_get_contents($strDownload); //set the headers to force a download header("Content-type: application/force-download"); header("Content-Disposition: attachment; filename=\"".str_replace(" ", "_", $arrCheck['file'])."\""); //echo the file to the user echo $strFile; //update the DB to say this file has been downloaded mysql_query("UPDATE downloads SET downloads = downloads + 1 WHERE downloadkey = '".mysql_real_escape_string($_GET['key'])."' LIMIT 1"); exit; }else{ echo "We couldn't find the file to download."; } }else{ //this file has already been downloaded and multiple downloads are not allowed echo "This file has already been downloaded."; } }else{ //this download has passed its expiry date echo "This download has expired."; } }else{ //the download key given didnt match anything in the DB echo "No file was found to download."; } }else{ //No download key wa provided to this script echo "No download key was provided. Please return to the previous page and try again."; }





function createKey(){ //create a random key $strKey = md5(microtime()); //check to make sure this key isnt already in use $resCheck = mysql_query("SELECT count(*) FROM downloads WHERE downloadkey = '{$strKey}' LIMIT 1"); $arrCheck = mysql_fetch_assoc($resCheck); if($arrCheck['count(*)']){ //key already in use return createKey(); }else{ //key is OK return $strKey; } } //get a unique download key $strKey = createKey(); //insert the download record into the database mysql_query("INSERT INTO downloads (downloadkey, file, expires) VALUES ('{$strKey}', 'onetimedownload.zip', '".(time()+(60*60*24*7))."')");