That can be spoofed, though, and not all browsers set it, and will not stop anyone from just typing in the URL...
http://www.example.com/files/mydoc.doc ---John Holmes... > -----Original Message----- > From: Marek Kilimajer [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, June 04, 2002 3:58 AM > To: PHP > Subject: Re: [PHP] Download Script - Newbie Alert > > You can also check $HTTP_REFERER, it's much simpler > > Marek > > Clay Loveless wrote: > > >Something else along these lines -- I really, really wish that more sites > >that use this method would test across multiple browsers and platforms. > > > >I agree with everything John is saying regarding testing > access/permissions > >-- I've used this technique many times myself. > > > >However, if a user with Internet Explorer on Mac OS X clicks this link: > > > > www.domain.dom/file.php?id=23 > > > >They'll wind up with a file on their desktop called "file.php". > > > >Not every browser pays close enough attention to the "filename" in the > >Content-Disposition header. > > > >Solution? > > > > www.domain.com/file.php/23/docname.xls > > > >I believe this will run file.php, which can then pull in the $PATH_INFO > to > >determine what file is being requested, check session permissions, etc., > can > >then spit out the right headers as John suggests, AND users will > definitely > >wind up with a downloaded file called "docname.xls". > > > >If your pages are dynamically generated, you can even do tricks like this > to > >thwart external linking: > > > ><?php > > $bootLeech = date("U") / 2; > > echo "<a > >href=\"http://www.domain.com/file.php/23/$bootLeech/docname.xls">downlo ad > </a > > > > > >>"; > >> > >> > >?> > > > >Then in your file.php script, do the following: > > - explode $PATH_INFO on "/" > > - check the $bootLeach array position with the same calculation ... > >Where you can allow a plus/minus error tolerance of 10 minutes. > > > > > >We use this trick on http://www.imagescentral.com ... Kids frequently > want > >to build Geocities sites that leech all our images. Our image file URLs > work > >*just* long enough for them to build their pages, and test that they look > >good. > > > >30 hours later, all the leeched images are replaced with Images Central > >logos. : ) > > > >Fun! > > > >-Clay > > > > > > > > > > > >>From: "John Holmes" <[EMAIL PROTECTED]> > >>Organization: U.S. Army > >>Reply-To: <[EMAIL PROTECTED]> > >>Date: Mon, 3 Jun 2002 20:06:42 -0400 > >>To: "'Philip Hess'" <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]> > >>Subject: RE: [PHP] Download Script - Newbie Alert > >> > >>Store the files above your web root and use a PHP script to control > >>access. > >> > >>Use header to set the appropriate header for the file, > >> > >>header("Content-Type: application/vnd.ms-excel; name='excel'"); > >>header("Content-Disposition: attachment; filename=" . $filename . > >>".xls"); > >> > >>then use passthru() to send the contents of the file. Use a path for > >>passthru that's above the web root. > >> > >>The key to this though, is to do some checking with PHP to make sure the > >>person is authorized to download the file. Simply doing the above will > >>still allow someone to link directly to file.php?id=23 or whatever, and > >>get the contents. > >> > >>Start a session on another page, the one before the download, and then > >>check for the session in this page, before you send the file. If the > >>session doesn't exist (or a certain variable within it) then don't send > >>the file. > >> > >>---John Holmes... > >> > >> > >> > >>>-----Original Message----- > >>>From: Philip Hess [mailto:[EMAIL PROTECTED]] > >>>Sent: Monday, June 03, 2002 6:09 PM > >>>To: [EMAIL PROTECTED] > >>>Subject: [PHP] Download Script - Newbie Alert > >>> > >>>Hello, > >>> > >>>I would like to allow visitors to my site to download documents > >>> > >>> > >>created > >> > >> > >>>with MS office and .PDF files as well. In order to prevent linking > >>> > >>> > >>from > >> > >> > >>>other sites I'd like to make or modify a script that hides the actual > >>>location of the files. > >>> > >>>A pointer in the right direction would be most appreciated. > >>> > >>>Thanks > >>>--------------------------------------------------------------- > >>>Philip Hess - Pittsburgh, PA USA - Computer Teacher > >>>E-mail: pjh_at_zoominternet.net > >>>Phil's Place (my web site) http://phil.mav.net/ > >>>PA School District Database: http://phil.mav.net/district.hts > >>>--------------------------------------------------------------- > >>> > >>> > >>>-- > >>>PHP General Mailing List (http://www.php.net/) > >>>To unsubscribe, visit: http://www.php.net/unsub.php > >>> > >>> > >> > >>-- > >>PHP General Mailing List (http://www.php.net/) > >>To unsubscribe, visit: http://www.php.net/unsub.php > >> > >> > >> > > > > > > > > > > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php