Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re^3: Can't Get CGI Results Page to Redirect

by thezip (Vicar)
on Aug 03, 2009 at 22:57 UTC ( #785585=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Can't Get CGI Results Page to Redirect
in thread Can't Get CGI Results Page to Redirect

Just don't print the header until you're ready to either print the page -or- generate a redirect.

A technique you can use to defer printing the header is to build up your HTML output into a string, and then do:

#!/usr/bin/perl use strict; use warnings; use CGI qw/:standard/; my $q = CGI->new(); my $do_redirect = 1; # for example only # ... build the entire output into a string $str = "This is your concatenated HTML doc"; if ($do_redirect) { print redirect($url); } else { print $q->header(), $str; }
The idea is to wait until the absolute last second to print either header.

What can be asserted without proof can be dismissed without proof. - Christopher Hitchens


Comment on Re^3: Can't Get CGI Results Page to Redirect
Download Code
Replies are listed 'Best First'.
Re^4: Can't Get CGI Results Page to Redirect
by socrtwo (Sexton) on Aug 05, 2009 at 13:54 UTC
    OK, I was able to find an open source uploader and intercept the header before it printed. Here' where I put the code:
    if ($action eq 'admin') { print $query->header; if ($login && $password) { &admin($query, $login, $password); } else { print &PagePassword($NAME_TITLE{'common_admin'}); } } elsif ($action eq 'upload') { ##### My code begins ##### use CGI qw(:cgi); use strict; `perl newimg2db.pl > newimgseekurl.txt`; sleep 1 while ( !(-e "newimgseekurl.txt") ); use File::Copy; copy("newimgseekurl.txt", "newimgseekurl2.txt") or die "File canno +t be copied."; my $file = "newimgseekurl.txt"; unlink($file); open FILE, "newimgseekurl2.txt" or die "Couldn't open file: $!"; my $newimgseekurl = <FILE>; close FILE; print redirect("$newimgseekurl"); ##### My Code Ends ##### if ($dir = &check_password('guest', $login, $password)) { print &Upload($query, $dir); } else { print &BadPassword($NAME_TITLE{'common_member'}); } } else { print $query->redirect($FORM_URL);

    This did not prevent the file from uploading and did properly redirect. Thanks for the help, views and voting.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://785585]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (12)
As of 2015-07-07 21:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (93 votes), past polls