Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

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

by socrtwo (Sexton)
on Aug 03, 2009 at 22:45 UTC ( #785581=note: print w/replies, xml ) Need Help??

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

Thanks for your response. Sorry about the detail. I will go lighter I hope as I learn more Perl... Anyway, if you only get one shot at the header, should I write the redirect before the first line in the default header?
print qq~Content-type: text/html\n\n~;?
Yeah I hard coded the redirection and no redirecting occurred.

Replies are listed 'Best First'.
Re^3: Can't Get CGI Results Page to Redirect
by thezip (Vicar) on Aug 03, 2009 at 22:57 UTC
    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
      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 > 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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://785581]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (6)
As of 2017-12-12 09:28 GMT
Find Nodes?
    Voting Booth?
    What programming language do you hate the most?

    Results (328 votes). Check out past polls.