Re: Server side redirection - yet again

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2010/1/27 Jacob Kruger <jacobk@xxxxxxxxxxxxxx>:
> 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"
> <rquadling@xxxxxxxxxxxxxx>
> To: "Jacob Kruger" <jacobk@xxxxxxxxxxxxxx>
> Cc: <php-windows@xxxxxxxxxxxxx>
> Sent: Wednesday, January 27, 2010 12:42 PM
> Subject: Re:  Server side redirection - yet again
>
>
>> 2010/1/27 Jacob Kruger <jacobk@xxxxxxxxxxxxxx>:
>>>
>>> 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

-- 
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [PHP Database Programming]     [PHP Install]     [Kernel Newbies]     [Yosemite Forum]     [PHP Books]

  Powered by Linux