Avatar billede thebeginner Nybegynder
20. august 2002 - 13:27 Der er 4 kommentarer og
1 løsning

Redirect cgi to html

hej gruppe :-)

Jeg har rodet lidt med den funktion som gør at man kan vidersende en bruger fra et cgi script til en html side..

mit script ser så ledes ud..

$url = "http://www.domain.dk/";
    print "Location: $url\n\n";
    exit; 

Men den skriver kun URL´en på en side..

jeg har så fundet frem til at der skal en funktion mere ind i scriptet .. noget med

print "Content-Location:\n\n";

Men med den virker det hellere ikke... Nogen der har et lille bud..

TheBeginner
Avatar billede jespernaur Nybegynder
20. august 2002 - 19:21 #1
Det første du har gjort er fuldstændig rigtigt UNDER FORUDSÆTNING AF, at dit script ikke forinden har skrevet noget andet ud. Sætningen

    print "Location: $url\n\n";

skal altså være den eneste 'print'-sætning i scriptet - der må IKKE være andet.

Mvh
Jesper Naur
Avatar billede thebeginner Nybegynder
20. august 2002 - 19:40 #2
Hej Jesper

oki.. der er en masse Print i det script... men kig det lige... ved ikke om dem der er der har betydning..

  #!/usr/bin/perl
print "Content-Location:\n\n";

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
    ($name, $value) = split(/=/, $pair);
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $value =~ s/\n/ /g;
    $FORM{$name} = $value;
}

open(OUTF,">>checklist.dat") or dienice("Couldn't open userlist.dat for writing: $!");

print OUTF
"$FORM{'user'}|$FORM{'mail'}|$FORM{'kode'}";

%boxes = ("des" => "Website Design",
          "svr" => "Web Server Administration",
          "com" => "Electronic Commerce",
          "mkt" => "Web Marketing/Advertising",
          "edu" => "Web-related Education" );

foreach $key (keys %boxes) {
    if ($FORM{$key} == 1) {
        print OUTF "$key,";
    }
}

print OUTF "|$FORM{'comments'}\n";
close(OUTF);
               
#print <<EndHTML;
#<html><head><title>Tak</title></head>
#<body>
#<h2>Tak for dit samarbejde</h2>
#din konto vil forblive aktiv i 30 dage mere.<p>
#<a href="www.sted.dk">Gå til startsiden</a><p>
#</body></html>
#EndHTML
#print "http://www.sted.dk\n\n";


$url = "http://www.sted.dk/";
    print "Location: $url\n\n";
    exit; 

sub dienice {
    my($msg) = @_;
    print "<h2>Error</h2>\n";
    print $msg;
    exit;
}
Avatar billede jespernaur Nybegynder
20. august 2002 - 22:24 #3
Linie 2:
    print "Content-Location:\n\n";

er ødelæggende - da den afsluttes med \n\n har du derved afsendt HTTP-headeren, hvilket fører til at din senere

    print "Location: $url\n\n";

bare vises som data på siden.
Du har også lidt print til OUTF, dette er uskadeligt, da det ender i en fil på serveren
Avatar billede thebeginner Nybegynder
22. august 2002 - 22:23 #4
Hej Jesper..

Tak for dit svar :-) Hvordan kan jeg så lave en redirect, hvis der er PRINT i et script.. :-(

niels
Avatar billede jespernaur Nybegynder
22. august 2002 - 22:57 #5
Du er nødt til i dit script FØRST at beslutte om der skal redirectes eller om der faktisk skal vises noget.

Hvis der skal redirectes skal du bruge

    print "Location: $url\n\n";

ellers skal du bruge hvad du ellers ville have print'et for at vise din side.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester