NYCPHP Meetup

NYPHP.org

[nycphp-talk] need another pair of eyes!

Kristina Anderson ka at kacomputerconsulting.com
Thu Jul 24 09:17:23 EDT 2008


This project has since lost some of its urgency and so I've decided to 
try both suggestions, below (thanks Tim), and whatever else is 
necessary to get this working the way I need.  I'll post both the old 
code which is working without the new "feature" and the new code in 
progress.  

What the application does:

Processes Paypal-returned transaction information, inserts into 
database and then authenticates for unique transaction ID to download a 
particular file residing in a non-web directory, as identified by id# 
of purchased document.  File save/open dialogue box appears if 
authenticated.

The current code redirects back to the original website but opens up a 
file save/open dialogue box in that domain only, and does not offer the 
capability to display your thank you message and custom web page.

Right now after working on this yesterday and looking at it again, I'm 
not at all certain my original proposed approach, below, could ever 
work.  Tim's suggestions look interesting.  

-- Kristina
 

> I suppose you could try just rendering the page, along with your  
> hidden form that automagically submits... something like:
> 
> --BEGIN--
> <?PHP
> 	if (! empty($_POST['txid']) && ! !empty($_POST['pdfid'])){
> 		//Send headers and PDF data
> 		die();
> 	}
> ?>
> <html><head>...
> <script type="text/javascript">
> doDownload=function(){
> 	document.getElementById('secretForm').submit();
> }
> </script>
> </head>
> <body onload="doDownload();">
> Hi, and thanks.
> 
> Here's yer file.
> <form id="secretForm" action="" method="POST">
> <input type="hidden" name="txid" value="<?PHP echo $txid; ?>" />
> <inpu type="hidden" name="pdfid" value="<?PHP echo $pdfid; ?> />
> </form>
> </body>
> </html>
> 
> --END--
> 
> So the first time through (with no posted txid and pdfid) you just  
> get the page, which as soon as it loads everything, submits it's own  
> hidden form back to itself (posting txid and pdfid).
> 
> I believe, without testing, that if your headers are correct, most 
or  
> all browsers will just do their standard "download a file" behavior,  
> and continue to display your content from the first request.  But 
you  
> should test thoroughly.
> 
> -Tim
> 
> On Jul 23, 2008, at 4:11 PM, Kristina Anderson wrote:
> 
> > Hi Tim -- is there any way to get it to work by submitting the form
> > twice and then including the file with the headers/pdf content?
> >
> > thanks.
> >
> >> So why not approach it like this:
> >>
> >> 	1) Redirect back from paypal.  Display whatever text you need.
> >> 	2) Include in that page a good ole "Your download should start
> >> momentarily, if not, <a ...>click here</a>
> >> 	3) Include a hidden iframe pointing at an empty page
> >> 	4) Include a hidden form that targets the iframe
> >> 	5) Use javascript to trigger to form submit
> >> 	6) Whatever the form-handler script is, I'm assuming it's the
> > bit
> >> that outputs some headers and then emits the PDF content.
> >>
> >> This seems to be close to what you're trying to do, but with the
> >> addition of the iframe.
> >>
> >> -Tim
> >>
> >> On Jul 23, 2008, at 3:52 PM, Kristina Anderson wrote:
> >>
> >>> The situation is this...the full app needs to
> >>>
> >>> 1.  upon redirection from Paypal, display some text on an HTML 
page,
> >>>
> >>> 2.  post some data that is passed to the download page, and
> >>>
> >>> 3.  serve up a file for download.
> >>>
> >>> In order for me to use headers to serve up the file, I have to
> > pass
> >>> the
> >>> data on the transation to another page after I render the HTML.
> > There
> >>> is database validation stuff which is stripped out for this sample
> > but
> >>> which is working in the original code.
> >>>
> >>>
> >>>
> >>> Thanks!
> >>>
> >>>> Not entirely clear on what you're trying to accomplish.  Can you
> >>> give
> >>>> us some context, maybe tell us a user story?
> >>>>
> >>>> -Tim
> >>>>
> >>>> On Jul 23, 2008, at 3:28 PM, Kristina Anderson wrote:
> >>>>
> >>>>> Hi everyone, I really need another pair of eyes to take a look 
at
> >>>>> this.  I'm pretty sure this form needs to be submitted twice in
> >>> order
> >>>>> to pass the post array to the included file (see code 
below)...is
> >>> that
> >>>>> the only issue here..?  this is a bare bones code sample which i
> >>> will
> >>>>> have to integrate into my paypal app.
> >>>>>
> >>>>> the code modification was prompted by the fact that the buyers
> >>> were
> >>>>> not
> >>>>> seeing an html page on my client's website before the download 
box
> >>>>> popped up, and this needs to be rectified.
> >>>>>
> >>>>> Thanks in advance!
> >>>>>
> >>>>> FILE 1 - testdowndisp.php
> >>>>> <?
> >>>>>
> >>>>> $itemno = "333";
> >>>>>
> >>>>> ?>
> >>>>>
> >>>>> <html>
> >>>>> <head>
> >>>>> <script language="javascript">
> >>>>>
> >>>>> var flag = true;
> >>>>>
> >>>>> function laLoad(){
> >>>>>
> >>>>> if (flag) {
> >>>>>
> >>>>> document.fred.submit();
> >>>>> //var flag = false;
> >>>>>
> >>>>> }
> >>>>>
> >>>>> }
> >>>>>
> >>>>> </script>
> >>>>>
> >>>>> </head>
> >>>>>
> >>>>> <body onload="laLoad()">
> >>>>> Thanks for your purchase.  The charge will appear on your
> > statement
> >>> as.<p>Welcome back to Magazine website.
> >>>>>
> >>>>> <form name="fred" action="testdowndisp.php" method="POST">
> >>>>> <input type="hidden" name="transid" value="<? echo $tx ?>">
> >>>>> <input type="hidden" name="pdfid" value="<? echo $itemno ?>">
> >>>>> </form>
> >>>>> <?
> >>>>>
> >>>>> ob_clean();
> >>>>> include('downloadfile2.php');
> >>>>> //exit(0);
> >>>>>
> >>>>> ?>
> >>>>> </body>
> >>>>> </html>
> >>>>>
> >>>>>
> >>>>> FILE 2 -- downloadfile2.php
> >>>>>
> >>>>> <?
> >>>>>
> >>>>> $pdfid = $_POST['pdfid'];
> >>>>> $filename = $pdfid.".pdf";
> >>>>> //echo $pdfid."<br>";
> >>>>> //echo $filename."<br>";
> >>>>>
> >>>>>
> >>>>> //====
> >>>>> $path = '/usr431/home/p/r/proof/PDFs/';
> >>>>> $filesize=filesize($path.$filename);
> >>>>> header("Content-Type: application/pdf");
> >>>>>     header("Content-Length: ".$filesize);
> >>>>>     header("Content-Disposition: attachment; 
filename=$filename");
> >>>>>     header("Content-Transfer-Encoding: binary");
> >>>>> readfile($path.$filename);
> >>>>> //fopen($path.$filename);
> >>>>> //===
> >>>>>
> >>>>> ?>
> >>>>>
> >>>>>
> >>>>> -- Kristina_______________________________________________
> >>>>> New York PHP Community Talk Mailing List
> >>>>> http://lists.nyphp.org/mailman/listinfo/talk
> >>>>>
> >>>>> NYPHPCon 2006 Presentations Online
> >>>>> http://www.nyphpcon.com
> >>>>>
> >>>>> Show Your Participation in New York PHP
> >>>>> http://www.nyphp.org/show_participation.php
> >>>>
> >>>> _______________________________________________
> >>>> New York PHP Community Talk Mailing List
> >>>> http://lists.nyphp.org/mailman/listinfo/talk
> >>>>
> >>>> NYPHPCon 2006 Presentations Online
> >>>> http://www.nyphpcon.com
> >>>>
> >>>> Show Your Participation in New York PHP
> >>>> http://www.nyphp.org/show_participation.php
> >>>>
> >>>>
> >>>
> >>>
> >>> _______________________________________________
> >>> New York PHP Community Talk Mailing List
> >>> http://lists.nyphp.org/mailman/listinfo/talk
> >>>
> >>> NYPHPCon 2006 Presentations Online
> >>> http://www.nyphpcon.com
> >>>
> >>> Show Your Participation in New York PHP
> >>> http://www.nyphp.org/show_participation.php
> >>
> >> _______________________________________________
> >> New York PHP Community Talk Mailing List
> >> http://lists.nyphp.org/mailman/listinfo/talk
> >>
> >> NYPHPCon 2006 Presentations Online
> >> http://www.nyphpcon.com
> >>
> >> Show Your Participation in New York PHP
> >> http://www.nyphp.org/show_participation.php
> >>
> >>
> >
> > _______________________________________________
> > New York PHP Community Talk Mailing List
> > http://lists.nyphp.org/mailman/listinfo/talk
> >
> > NYPHPCon 2006 Presentations Online
> > http://www.nyphpcon.com
> >
> > Show Your Participation in New York PHP
> > http://www.nyphp.org/show_participation.php
> 
> _______________________________________________
> New York PHP Community Talk Mailing List
> http://lists.nyphp.org/mailman/listinfo/talk
> 
> NYPHPCon 2006 Presentations Online
> http://www.nyphpcon.com
> 
> Show Your Participation in New York PHP
> http://www.nyphp.org/show_participation.php
> 




More information about the talk mailing list