ajicles Posted August 4, 2010 Share Posted August 4, 2010 I know that .htaccess is php. But I need help with my website that is file hosting. I need a way for people to download the file and not just use a direct link to the file. So I though I could use htaccess to stop that. But that is a main issue. I need some way for php to grab the file without being blocked by htaccess and place it into a temp folder then allow for download. But the only issue with that is the user could leave the website when the download is downloading. But I could have a script that will delete the temp file when it expires. But then how would it run if there is no user on the website I could try making it when a person comes to the site it deletes the file if it is expired but then again if there is zero traffic it will never expire. Any thoughts to my situation? Another thing I need help is making a download button appear when the timer hits zero. I tried using javascript to make a hidden div to show with the download button in it. But then the user can just look at the source code and see the link... So many loop holes Quote Link to comment https://forums.phpfreaks.com/topic/209743-htaccess/ Share on other sites More sharing options...
Azsen Posted August 4, 2010 Share Posted August 4, 2010 .htaccess file deny from all Create that in Notepad if on Windows (lets you save files with a . in front) and put that in the /files directory. That will block direct access to the file. PHP can still access the file though. Then all you need to do in your PHP is navigate to the directory where the file is and you should be able to open it using PHP and make it available for download. Well that's what I'd try and do, might be wrong though. Quote Link to comment https://forums.phpfreaks.com/topic/209743-htaccess/#findComment-1094991 Share on other sites More sharing options...
joel24 Posted August 4, 2010 Share Posted August 4, 2010 Any thoughts to my situation? I'd go for Azsen's solution. Another thing I need help is making a download button appear when the timer hits zero. I tried using javascript to make a hidden div to show with the download button in it. But then the user can just look at the source code and see the link... Try using ajax - jquery framework will be easiest form of ajax to use for this. This can load the html returned from a PHP file into a div on the page. You can script this to show a count down, then when it finishes load the PHP file to the div. The php can then check if the timeout has passed, through a session value showing the time when the download page was first clicked. Quote Link to comment https://forums.phpfreaks.com/topic/209743-htaccess/#findComment-1094995 Share on other sites More sharing options...
Adam Posted August 4, 2010 Share Posted August 4, 2010 I think you have the wrong idea about downloading files. All you need to do is place the files outside of the publicly accessible directory (e.g. outside of htdocs / public_html / or whatever your web server names it) and then use PHP to read the file and force download. I know that .htaccess is php. Actually .htaccess files are for configuration of Apache, not PHP (although you can modify certain PHP config options though them). Quote Link to comment https://forums.phpfreaks.com/topic/209743-htaccess/#findComment-1095003 Share on other sites More sharing options...
ajicles Posted August 4, 2010 Author Share Posted August 4, 2010 typo "isn't". Aloso I have found a script with a count down timer: if (!empty($message)) { echo "<p class=\"message\">" . $message . "</p>"; } else { if (!@$_GET['d']){ redirect_to("index.php"); } else { echo ' <div id="downloadingform"> <center> <p><center>Please until the countdown is done, or upgrade your account.</center></p> <p><center>You are downloading: '.$row[1].'</center></p> <p> </p> <p> </p> <form name="counter"><center><input type="text" size="8" name="d2"></center></form> <script> <!-- // var milisec=0 var seconds=30 document.counter.d2.value="30" function display(){ if (milisec<=0){ milisec=9 seconds-=1 } if (seconds<=-1){ milisec=0 seconds+=1 } else milisec-=1 document.counter.d2.value=seconds+"."+milisec setTimeout("display()",100) } display() --> </script> <div id="hid" style="visibility:hidden"><center><a href="upload/'.$row[4].'/'.$row[1].'"><img src="images/download.png" width="200" height="55" border="0" /></a></center></div> <script type="text/javascript"> function showIt() { document.getElementById("hid").style.visibility = "visible"; } setTimeout("showIt()", 30000); // after 1 sec </script> </div>'; Quote Link to comment https://forums.phpfreaks.com/topic/209743-htaccess/#findComment-1095188 Share on other sites More sharing options...
ajicles Posted August 4, 2010 Author Share Posted August 4, 2010 I tried using: $file = $row['1']; header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Type: application/force-download"); header( "Content-Disposition: attachment; filename=".basename($_SERVER['DOCUMENT_ROOT'].'FileHosting/upload/'.$row[4].'/'.$file)); header( "Content-Description: File Transfer"); @readfile($file); When I echo back: $_SERVER['DOCUMENT_ROOT'].'FileHosting/upload/'.$row[4].'/'.$file It gives me this: D:/wamp/www/FileHosting/upload/ajicles/040810051842songs.txt Which is the right location and file. But it returns this: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" /> <title>Ajicles File Hosting - Downloading:040810051842songs.txt</title> <link rel="stylesheet" type="text/css" href="style.css" /> <!--[if IE 6]> <link rel="stylesheet" type="text/css" href="iecss.css" /> <![endif]--> </head> <body> <div id="main_container"> <div id="header"> <div id="logo"><a href="index.html"><img src="images/logo.png" alt="" title="" border="0" width="251" height="82"/></a></div> <div id="menu_tab"> <ul class="menu"> <li><a href="index.php" class="nav"> Home </a></li> <li><a href="upload.php" class="nav"> Upload</a></li> <li><a href="login.php" class="nav"> Login</a></li> <li><a href="register.php" class="nav"> Register</a></li> <li><a href="contact.php" class="nav"> Contact </a></li> <li><a href="logout.php" class="nav"> Logout </a></li> </ul> </div> </div> <div id="main_content"> <div id="downloading"> </div> </div> <div class="clear"></div> </div> <!-- main_content--> <div id="footer"> <img src="images/footer_logo.gif" alt="" title="" width="33" height="45" class="left" /> <div class="left_footer"> Ajicles Hosting 2010. All Rights Reserved </div> </div> </div> </body> </html> I don't know what I am doing wrong? Quote Link to comment https://forums.phpfreaks.com/topic/209743-htaccess/#findComment-1095235 Share on other sites More sharing options...
joel24 Posted August 4, 2010 Share Posted August 4, 2010 you need to read the file with PHP (fopen, fread) then force its download googled a quick example here Quote Link to comment https://forums.phpfreaks.com/topic/209743-htaccess/#findComment-1095368 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.