Re: [PHP-WIN] Server side redirection - yet again
[email protected] ("Jacob Kruger")
| Newsgroups | php.windows |
|---|---|
| Message-ID | <000a01ca9f44$d8cebb60$6401a8c0@spacea44918228> |
Thanks again. Should work perfectly. Stay well Jacob Kruger Blind Biker Skype: BlindZA '...fate had broken his body, but not his spirit...' ----- Original Message ----- From: "Richard Quadling" <[email protected]> To: "Jacob Kruger" <[email protected]> Cc: <[email protected]> Sent: Wednesday, January 27, 2010 1:20 PM Subject: Re: [PHP-WIN] Server side redirection - yet again > 2010/1/27 Jacob Kruger <[email protected]>: >> Makes sense, and sort of what thought would be possible/doable. >> >> Will look into it - off-hand, what function etc. do you use to set >> document/response headers? >> >> TIA >> >> Jacob Kruger >> Blind Biker >> Skype: BlindZA >> '...fate had broken his body, but not his spirit...' >> >> ----- Original Message ----- From: "Richard Quadling" >> <[email protected]> >> To: "Jacob Kruger" <[email protected]> >> Cc: <[email protected]> >> Sent: Wednesday, January 27, 2010 12:42 PM >> Subject: Re: [PHP-WIN] Server side redirection - yet again >> >> >>> 2010/1/27 Jacob Kruger <[email protected]>: >>>> >>>> I know this most likely isn't possible, and am currently using >>>> javascript, >>>> along with using PHP script in each page to just double check a session >>>> login before displaying page content to make sure the user/person >>>> browsing >>>> the specific page is in fact logged in, etc., but I now have a word >>>> document >>>> that would be nice to make downloadable from the members section of a >>>> website, but not sure how it would be possible to really stop someone >>>> from >>>> downloading the file if, for whatever reason they had the direct URL >>>> for >>>> it, >>>> without sort of never really offering that to anyone without having >>>> sort >>>> of >>>> redirected them via backend to get the file - sort of like maybe >>>> loading >>>> the >>>> file into a buffer of sorts, setting the response file type, and then >>>> sending it to them - not sure how possible/doable this is via PHP, or >>>> on >>>> a >>>> linux server? >>>> >>>> I know I could alternatively just create an HTML file bazsed on the >>>> word >>>> document, and then implement the PHP session checking into it, etc., >>>> but >>>> would really prefer to just keep the document unchanged as such. >>>> >>>> Stay well >>>> >>>> Jacob Kruger >>>> Blind Biker >>>> Skype: BlindZA >>>> '...fate had broken his body, but not his spirit...' >>>> >>>> >>>> __________ Information from ESET NOD32 Antivirus, version of virus >>>> signature >>>> database 4808 (20100126) __________ >>>> >>>> The message was checked by ESET NOD32 Antivirus. >>>> >>>> http://www.eset.com >>>> >>>> >>>> >>>> >>>> -- >>>> PHP Windows Mailing List (http://www.php.net/) >>>> To unsubscribe, visit: http://www.php.net/unsub.php >>>> >>>> >>> >>> Step 1 would be to put the document outside of the >>> doc_root/public_html/etc. That way there is no direct URL. >>> >>> Step 2 would be to create a downloader which validates the session and >>> if all is well, issues the appropriate headers to force a download and >>> then readfile() the document. >>> >>> No direct access to the download. Must be validated to get the >>> download. Simple to implement. >>> >>> -- >>> ----- >>> Richard Quadling >>> "Standing on the shoulders of some very clever giants!" >>> EE : http://www.experts-exchange.com/M_248814.html >>> EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp >>> Zend Certified Engineer : >>> http://zend.com/zce.php?c=ZEND002498&r=213474731 >>> ZOPA : http://uk.zopa.com/member/RQuadling >>> >>> -- >>> PHP Windows Mailing List (http://www.php.net/) >>> To unsubscribe, visit: http://www.php.net/unsub.php >>> >>> >>> __________ Information from ESET NOD32 Antivirus, version of virus >>> signature database 4809 (20100127) __________ >>> >>> The message was checked by ESET NOD32 Antivirus. >>> >>> http://www.eset.com >>> >>> >>> >> >> >> __________ Information from ESET NOD32 Antivirus, version of virus >> signature >> database 4809 (20100127) __________ >> >> The message was checked by ESET NOD32 Antivirus. >> >> http://www.eset.com >> >> >> >> > > Edited code from one of my classes... > > <?php > // Do your session validation and redirection first. > > // You will need to have something like $_GET['FileID'] to determine which > file. > > // You will need to translate the $_GET['FileID'] to the actual file > name => $PhysicalFileName > > // I use the following headers to force a downloads. > > // You can change the Content-Type to application/msexcel of Excel or > application/pdf for Adobe Acrobat files, etc. > > header('HTTP/1.1 200 OK', True, 200); > header('Content-Description: File Transfer'); > header('Content-Type: application/msword'); > header('Content-Disposition: attachment; filename="document.doc"'); > header('Content-Transfer-Encoding: binary'); > header('Expires: 0'); > header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); > header('Pragma: public'); > header('Content-Length: ' . filesize($PhysicalFileName)); > > // readfile() will simply pass the file from the drive straight to the > client. > readfile($PhysicalFileName); > > // Exit to close the process. > exit; > > > -- > ----- > Richard Quadling > "Standing on the shoulders of some very clever giants!" > EE : http://www.experts-exchange.com/M_248814.html > EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp > Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731 > ZOPA : http://uk.zopa.com/member/RQuadling > > __________ Information from ESET NOD32 Antivirus, version of virus > signature database 4809 (20100127) __________ > > The message was checked by ESET NOD32 Antivirus. > > http://www.eset.com > > > __________ Information from ESET NOD32 Antivirus, version of virus signature database 4809 (20100127) __________ The message was checked by ESET NOD32 Antivirus. http://www.eset.com