Avatar billede espectro Nybegynder
05. september 2001 - 13:43 Der er 24 kommentarer og
1 løsning

Hjææælp!

Hej alle sammen, så er jeg på skideren igen :(((

Jeg vil lave en \"e-mail ting\" så folk kan tilføje deres e-mail til et txt dokument, men jeg er på skideren.

Min kode ser sådan her ud:

read(STDIN, $buffer, $ENV{`CONTENT_LENGTH´}) ;
@pairs = split (/&/, $buffer) ;
foreach $pair (@pairs)
{
    ($name, $value) = split(/=/, $pairs) ;
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-f0-9] [a-fA-f0-9])/pack(\"C\", hex($1))/eg;
    $FORM{$name} = $value;
open (emails,\">>email.txt\");
print lagerfil \"$FORM{`email´} ;\"
close (lagerfil) ;

print \"content-type: text/html\\n\\n\";
print \"<HTML><HEAD><TITLE>Tak for din interesse</TITLE></HEAD>\";
print \"<body bgcolor=\"#000000\" text=\"#FFFFFF\">\";
print \"Du bliver nu mailet når Dyrk.dk er på fødderne, tak for din interesse :)\";
print \"</BODY>\";
print \"</HTML>\";

navnet på e-mail formen er \"email\" og i kan tjekke den på www.dyrk.dk/test.htm

plz help :)

Michael
Avatar billede karto Nybegynder
05. september 2001 - 13:49 #1
Skulle
    ($name, $value) = split(/=/, $pairs) ;
ikke være:
    ($name, $value) = split(/=/, $pair) ;

PS. det hjælper gerne hvis du skriver hvad problemer er...

/Karto
Avatar billede el_cat Nybegynder
05. september 2001 - 13:52 #2
Jeg mener altså at open, print og close variablen skal være den samme, korrekt mig hvis jeg tager fejl
Print emails \"$FORM osv osv og
close(emails);
Avatar billede thomasledet Nybegynder
05. september 2001 - 15:00 #3
open (emails,\">>email.txt\");
print lagerfil \"$FORM{`email´} ;\"
close (lagerfil) ;

dur ikke!

open (EMAILS,\">>email.txt\") || die(\'Could not open file for appending\\n\\n\');
print EMAILS \"$FORM{`email´} ;\"
close (EMAILS) || die(\'Could not close file\');
Avatar billede thomasledet Nybegynder
05. september 2001 - 15:01 #4
karto>jo.... ellers giver det i hvert fald ingen mening...
Avatar billede thomasledet Nybegynder
05. september 2001 - 15:16 #5
du kunne forøvrigt også lige hurtigt kontrollere det indtastede, for at se om det bare minder lidt om en email...

*@*.* i et regulært udtryk burde kunne gøre det...
Avatar billede espectro Nybegynder
05. september 2001 - 15:23 #6
Ok, nu ser min kode sådan her ud:

read(STDIN, $buffer, $ENV{`CONTENT_LENGTH´}) ;
@pairs = split (/&/, $buffer) ;
foreach $pair (@pairs)
{
    ($name, $value) = split(/=/, $pairs) ;
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-f0-9] [a-fA-f0-9])/pack(\"C\", hex($1))/eg;
    $FORM{$name} = $value;
open (EMAILS,\">>email.txt\") || die(\'Could not open file for appending\\n\\n\');
print EMAILS \"$FORM{`email´} ;\"
close (EMAILS) || die(\'Could not close file\');


print \"content-type: text/html\\n\\n\";
print \"<HTML><HEAD><TITLE>Tak for din interesse</TITLE></HEAD>\" ;
print \"<body bgcolor=\"#000000\" text=\"#FFFFFF\">\" ;
print \"Du bliver nu mailet når Dyrk.dk er på fødderne, tak for din interesse :)\";
print \"</BODY>\" ;
print \"</HTML>\" ;

men jeg får stadig disse fejl:
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:


syntax error at D:\\dyrk.dk\\cgi-bin\\email.pl line 8, near \"print\"
syntax error at D:\\dyrk.dk\\cgi-bin\\email.pl line 14, near \"print\"
Missing right curly or square bracket at D:\\dyrk.dk\\cgi-bin\\email.pl line 18, within string
Execution of D:\\dyrk.dk\\cgi-bin\\email.pl aborted due to compilation errors.


håber det hjælper
Avatar billede thomasledet Nybegynder
05. september 2001 - 16:28 #7
read(STDIN, $buffer, $ENV{`CONTENT_LENGTH´}) ;
@pairs = split (/&/, $buffer) ;
foreach $pair (@pairs)
{
    ($name, $value) = split(/=/, $pairs) ;
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-f0-9] [a-fA-f0-9])/pack(\"C\", hex($1))/eg;
    $FORM{$name} = $value;
open (EMAILS,\">>email.txt\") || die(\'Could not open file for appending\\n\\n\');
print EMAILS $FORM{\'email\'};
close (EMAILS) || die(\'Could not close file\');
}
print \"content-type: text/html\\n\\n\";
print \"<HTML><HEAD><TITLE>Tak for din interesse</TITLE></HEAD>\" ;
print \"<body bgcolor=\"#000000\" text=\"#FFFFFF\">\" ;
print \"Du bliver nu mailet når Dyrk.dk er på fødderne, tak for din interesse :)\";
print \"</BODY>\" ;
print \"</HTML>\" ;
Avatar billede thomasledet Nybegynder
05. september 2001 - 16:29 #8
det skulle virke... tror jeg..
Avatar billede Thomas Nybegynder
05. september 2001 - 16:29 #9
I denne linie har du helt klart lidt fejl:
print EMAILS \"$FORM{`email´} ;\"

Prøv at ændre den til:
print EMAILS \"$FORM{email} \";
//Thomas
Avatar billede espectro Nybegynder
05. september 2001 - 16:39 #10
nu har jeg dette,

read(STDIN, $buffer, $ENV{`CONTENT_LENGTH´}) ;
@pairs = split (/&/, $buffer) ;
foreach $pair (@pairs)
{
    ($name, $value) = split(/=/, $pairs) ;
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-f0-9] [a-fA-f0-9])/pack(\"C\", hex($1))/eg;
    $FORM{$name} = $value;
open (EMAILS,\">>email.txt\") || die(\'Could not open file for appending\\n\\n\');
print EMAILS $FORM{\'email\'};
close (EMAILS) || die(\'Could not close file\');
}
print \"content-type: text/html\\n\\n\";
print \"<HTML><HEAD><TITLE>Tak for din interesse</TITLE></HEAD>\" ;
print \"<body bgcolor=\"#000000\" text=\"#FFFFFF\">\" ;
print \"Du bliver nu mailet når Dyrk.dk er på fødderne, tak for din interesse :)\";
print \"</BODY>\" ;
print \"</HTML>\" ;

og får dette :(

CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:


Can\'t find string terminator \"`\" anywhere before EOF at D:\\dyrk.dk\\cgi-bin\\email.pl line 1.

???
Avatar billede Thomas Nybegynder
05. september 2001 - 16:42 #11
Ret alle `´ til almindelige plinger (\') !!
Avatar billede espectro Nybegynder
05. september 2001 - 17:01 #12
ok, nu har jeg:

CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:


syntax error at D:\\dyrk.dk\\cgi-bin\\email.pl line 16, near \"print\"
Execution of D:\\dyrk.dk\\cgi-bin\\email.pl aborted due to compilation errors.

Avatar billede Thomas Nybegynder
05. september 2001 - 17:05 #13
Husk på, at når du bruger \" i en linie hvor der allerede er \" (fx. ved print), så skal du escape det! Altså skal linien med <body ...> rettes til:
print \"<body bgcolor=\\\"#000000\\\" text=\\\"#FFFFFF\\\">\";
Avatar billede Thomas Nybegynder
05. september 2001 - 17:06 #14
Og husk nu at rette de der mærkelige apostroffer som jeg skrev:
Linie 1 skal altså være:
read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'});
Avatar billede espectro Nybegynder
05. september 2001 - 18:03 #15
well


Den kører nu fint igennem, og skriver \"tak for din interesse\" når den er færdig meeen.....

Den skriver ikke til email.txt?
Avatar billede Thomas Nybegynder
05. september 2001 - 18:21 #16
Har du sat korrekt permissions (CHMOD)??? Der skal kunne skrives til filen (opret den evt. manuelt og sæt CHMOD rw-rw-rw (666) på den).
Avatar billede espectro Nybegynder
05. september 2001 - 20:49 #17
ja, der er write permission på den
Avatar billede Thomas Nybegynder
05. september 2001 - 21:33 #18
prøv at ændre
open (EMAILS,\">>email.txt\") || die(\'Could not open file for appending\\n\\n\');
til
open (EMAILS,\"+<email.txt\") || die(\'Could not open file for appending\\n\\n\');
måske hjælper det... kan ikke lige lure hvorfor den ellers ikke opdaterer.
Avatar billede espectro Nybegynder
06. september 2001 - 16:32 #19
ok.

tak for jeres svar.

Jeg prøvede simpelthen at ændre:
print EMAILS $FORM{\'email\'} ;
til:
print email.txt $FORM{\'email\'} ;

og det virkede. tak for jeres svar.

jeg skal nok give jeres point...
Avatar billede espectro Nybegynder
06. september 2001 - 16:33 #20
hmmm, kan jeg ikke giver flere end een person point?
Avatar billede Thomas Nybegynder
06. september 2001 - 16:37 #21
Jo, brug avanceret!
Avatar billede espectro Nybegynder
06. september 2001 - 16:58 #22
hmmm, af een eller anden grund virkedede det kun een gang??

Nu virker den ikke igen:

read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'});
@pairs = split (/&/, $buffer) ;
foreach $pair (@pairs)
{
    ($name, $value) = split(/=/, $pairs) ;
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-f0-9] [a-fA-f0-9])/pack(\"C\", hex($1))/eg;
    $FORM{$name} = $value;
open (EMAILS,\"+<email.txt\") || die(\'Could not open file for appending\\n\\n\');
print emails $FORM{\'email\'};
close (EMAILS) || die(\'Could not close file\');
}
print \"content-type: text/html\\n\\n\";
print \"<HTML><HEAD><TITLE>Tak for din interesse</TITLE></HEAD>\" ;
print \"<body bgcolor=\\\"#000000\\\" text=\\\"#FFFFFF\\\">\";
print \"<CENTER>Tak for din Interesse, du bliver nu mailet</CENTER>\" ;
print \"</BODY>\" ;
print \"</HTML>\" ;

Den bliver ikke opdateret
Avatar billede espectro Nybegynder
06. september 2001 - 17:02 #23
ok, jeg har fundet problemet

Den viker hvis jeg skriver:

read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'});
@pairs = split (/&/, $buffer) ;
foreach $pair (@pairs)
{
    ($name, $value) = split(/=/, $pairs) ;
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-f0-9] [a-fA-f0-9])/pack(\"C\", hex($1))/eg;
    $FORM{$name} = $value;
open (EMAILS,\">>email.txt\") || die(\'Could not open file for appending\\n\\n\');
print EMAILS hej ;
close (EMAILS) || die(\'Could not close file\');
}
print \"content-type: text/html\\n\\n\";
print \"<HTML><HEAD><TITLE>Tak for din interesse</TITLE></HEAD>\" ;
print \"<body bgcolor=\\\"#000000\\\" text=\\\"#FFFFFF\\\">\";
print \"Tak for din Interesse, du bliver nu maile\" ;
print \"</BODY>\" ;
print \"</HTML>\" ;

så skriver den \"hej i dokumentet\".

Så det er altså: $FORM{\'email\'}; på linie 10 den er galt med, kan nogle se hvad der er galt?

Skal nok give flere point
Avatar billede espectro Nybegynder
06. september 2001 - 17:05 #24
jeg får denne fjel hvis jeg prøver:
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:


syntax error at D:\\dyrk.dk\\cgi-bin\\email.pl line 10, near \"$FORM{´email´\"
syntax error at D:\\dyrk.dk\\cgi-bin\\email.pl line 12, near \"}\"
Execution of D:\\dyrk.dk\\cgi-bin\\email.pl aborted due to compilation errors.

Avatar billede espectro Nybegynder
06. september 2001 - 17:05 #25
nej, forkert...denne fejl:
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:


syntax error at D:\\dyrk.dk\\cgi-bin\\email.pl line 10, near \"$FORM{\"
syntax error at D:\\dyrk.dk\\cgi-bin\\email.pl line 12, near \"}\"
Execution of D:\\dyrk.dk\\cgi-bin\\email.pl aborted due to compilation errors.

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

IT-JOB