Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
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
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 chanting in the Monastery: (6)
As of 2014-08-23 01:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (171 votes), past polls