11. april 2002 - 06:09
Der er
9 kommentarer og 1 løsning
Få et CGI script til lave en på html side
Hej Alle Jeg har et CGI script, som jeg bruger på min HP, til at processe en vare bestilling, incl. kunde oplysninger med, scriptet er pt. lavet, så det bare henter en dødsyg side, der hedder tak.htm. Men er der nogen af jer eksperter, der kan lave scriptet om, så det (når man har ekserkveret scriptet) laver en pæn html side ud fra de oplysninger som scriptet har indsamlet ??, evt. med en knap i bunden som åbner "udskriv" vinduet så kunden kan få skrevet sin ordre ud ??. Jeg håber det er OK at poste hele scriptet her. Håber nogen kan hjælpe. Mvh. Christian H #!/usr/bin/perl print "Content-type: text/html\n\n"; read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $buffer); $counter=0; foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $counter=$counter+1; $Titel{$counter}=$name; $FORM{$name} = $value; } use Net::SMTP; $smtp = Net::SMTP->new('smtp.mail.dk', Hello => 'rr.com'); $smtp->mail('herogder@post.tele.dk'); $smtp->to('herogder@post.tele.dk'); $smtp->data(); $smtp->datasend("To: herogder@post.dk\n"); $smtp->datasend("From: $FORM{'bemail'}\n"); $smtp->datasend("Subject: Bestilling fra herogder.dk\n"); $smtp->datasend("\n"); print<<ENDE_AUSGABE; <HTML> <HEAD> <TITLE>Email afsendt</TITLE> </HEAD> <BODY BGCOLOR="#ffffff"> <center> <SCRIPT> self.location.href="$FORM['url']tak.htm" </SCRIPT> ENDE_AUSGABE $smtp->datasend("Hej ".$FORM{'bname'}."\n\n"); $smtp->datasend("Du har afgivet følgende oplysninger/bestilling:\n\n"); $smtp->datasend("Evt. Kundennummer:".$FORM{'bkdnr'}."\nEvn Firma: ".$FORM{'bfirma'}."\nNavn: ".$FORM{'bname'}."\n"); $smtp->datasend("Gade: ".$FORM{'bstrasse'}."\nPost nr. & BY: ".$FORM{'bpostcode'}." ".$FORM{'bstadt'}."\nTelefon:".$FORM{'btelefon'}."\nEmail:".$FORM{'bemail'}."\nKommentar:\n".$FORM{'Kommentar'}); #$smtp->datasend("\n\nLieferadresse:\nFirma: ".$FORM{'lfirma'}."\nName: ".$FORM{'lnachname'}."\nPLZ/Ort: ".$FORM{'lpostcode'}." ".$FORM{'lstadt'}."\nStrasse:".$FORM{'lstrasse'}); if ($FORM{'orderm'} eq "Kontoeinzug") { $mailbody=$mailbody."\n\nKontendaten:\nBank:".$FORM{'ktoinst'}."\nBLZ:".$FORM{'ktoblz'}."\nKtoNummer:".$FORM{'ktonr'}."\nInhaber:".$FORM{'ktoinh'}; } if ($FORM{'orderm'} eq "Kreditkarte") { $mailbody=$mailbody."\n\nKreditkarte:\nInstitut:".$FORM{'kredart'}."\nKartennummer:".$FORM{'krednr'}."\nAblauf Datum:".$FORM{'kredablauf'}; if ($FORM{'faxja'} eq "on") { $mailbody=$mailbody."\nKreditkarteninformationen werden per Fax gesendet"; } } $smtp->datasend("\n\nØnsker at bestille:\n\n"); $smtp->datasend("Betaling via ".$FORM{'orderm'}."\n"); $an=1; while ($FORM{'item'.$an}) { $artikel='item'.$an; $menge='quantity'.$an; $einzelpreis='priceeach'.$an; $vollpreis='totalcost'.$an; $smtp->datasend($FORM{$artikel}." Antal:".$FORM{$menge}." Stk. Pris:".$FORM{$einzelpreis}.$pr." Total pris:".$FORM{$vollpreis}."\n"); $an++; } $smtp->dataend(); $smtp->quit;
Annonceindlæg fra QNAP
11. april 2002 - 06:14
#1
du kan vel bruge `touch` som laver filen, og så selv definere outputtet ? noget alá: ecec("touch fil.html"); $foo > fil.html; hvis det kan passe ?
11. april 2002 - 06:15
#2
Det kunne se ud som om at ALLE "Backslash´erne" foran "backslash n" er forsvundet i postningen, men de er der altså i det originale script :-( christian H
11. april 2002 - 08:41
#3
send scriptet til mig: eksperten@sitemakerz.dk, så kigger jeg på det i løbet af i dag...
12. april 2002 - 00:22
#4
her er en løsning på dit problem... den er ikke testet, så skriv endelig, hvis det fejler eller ikke virker efter hensigten... fremtidig korrespondance bedes foregå over dette spørgsmål. #!/usr/bin/perl print "Content-type: text/html\n\n"; read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $buffer); $counter=0; foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $counter=$counter+1; $Titel{$counter}=$name; $FORM{$name} = $value; } use Net::SMTP; $smtp = Net::SMTP->new('smtp.mail.dk', Hello => 'rr.com'); $smtp->mail('herogder@post.tele.dk'); $smtp->to('herogder@post.tele.dk'); $smtp->data(); $smtp->datasend("To: herogder@post.dk\n"); $smtp->datasend("From: $FORM{'bemail'}\n"); $smtp->datasend("Subject: Bestilling fra Herogder.dk\n"); $smtp->datasend("\n"); print qq½<HTML> <HEAD> <TITLE>Email afsendt</TITLE> </HEAD> <BODY BGCOLOR="#ffffff"> <DIV align="center">½; printf("Hej %s<BR><BR>\n", $FORM{'bname'}); print("Du har afgivet følgende oplysninger/bestilling:<BR>\n"); printf("Evt. Kundennummer: %s<BR>Evt. firma: %s<BR>Navn: %s<BR>\n",$FORM{'bkdnr'}, $FORM{'bfirma'}, $FORM{'bname'}); printf("Gade: %s<BR>Postnummer og by: %s %s<BR>Telefon: %s<BR>Email: %s<BR>Kommentar: %s<BR><BR>\n", $FORM{'bstrasse'}, $FORM{'bpostcode'}, $FORM{'bstadt'}, $FORM{'btelefon'}, $FORM{'bemail'}, $FORM{'Kommentar'}); $smtp->datasend("Hej ".$FORM{'bname'}."\n\n"); $smtp->datasend("Du har afgivet følgende oplysninger/bestilling:\n\n"); $smtp->datasend("Evt. Kundennummer:".$FORM{'bkdnr'}."\nEvn Firma: ".$FORM{'bfirma'}."\nNavn: ".$FORM{'bname'}."\n"); $smtp->datasend("Gade: ".$FORM{'bstrasse'}."\nPost nr. & BY: ".$FORM{'bpostcode'}." ".$FORM{'bstadt'}."\nTelefon:".$FORM{'btelefon'}."\nEmail:".$FORM{'bemail'}."\nKommentar:\n".$FORM{'Kommentar'}); #$smtp->datasend("\n\nLieferadresse:\nFirma: ".$FORM{'lfirma'}."\nName: ".$FORM{'lnachname'}."\nPLZ/Ort: ".$FORM{'lpostcode'}." ".$FORM{'lstadt'}."\nStrasse:".$FORM{'lstrasse'}); if ($FORM{'orderm'} eq "Kontoeinzug") { $mailbody=$mailbody."\n\nKontendaten:\nBank:".$FORM{'ktoinst'}."\nBLZ:".$FORM{'ktoblz'}."\nKtoNummer:".$FORM{'ktonr'}."\nInhaber:".$FORM{'ktoinh'}; } if ($FORM{'orderm'} eq "Kreditkarte") { $mailbody=$mailbody."\n\nKreditkarte:\nInstitut:".$FORM{'kredart'}."\nKartennummer:".$FORM{'krednr'}."\nAblauf Datum:".$FORM{'kredablauf'}; if ($FORM{'faxja'} eq "on") { $mailbody=$mailbody."\nKreditkarteninformationen werden per Fax gesendet"; } } print("Ønsker at bestille:<BR><BR>\n"); printf("Betaling via %s<BR>",$FORM{'orderm'}); $smtp->datasend("\n\nØnsker at bestille:\n\n"); $smtp->datasend("Betaling via ".$FORM{'orderm'}."\n"); $an=1; while ($FORM{'item'.$an}) { $artikel='item'.$an; $menge='quantity'.$an; $einzelpreis='priceeach'.$an; $vollpreis='totalcost'.$an; $smtp->datasend($FORM{$artikel}." Antal:".$FORM{$menge}." Stk. Pris:".$FORM{$einzelpreis}.$pr." Total pris:".$FORM{$vollpreis}."\n"); printg("Artikel: %s<BR>Antal: %s<BR>Stk. pris: %s %s<BR>Totalpris: %s<BR><BR>", $FORM{$artikel}, $FORM{$menge}, $FORM{$einzelpreis}, $pr, $FORM{$vollpreis}); $an++; } printf("Mange tak for din bestilling! Bekræftelse er sendt til %s.", $FORM{'bemail'}); print("</DIV></BODY></HTML>"); $smtp->dataend(); $smtp->quit;
12. april 2002 - 00:23
#5
har allerede selv fundet en fejl... der, hvor der står "printg" næsten nederst... der skulle selvfølgelig stå "printf"
12. april 2002 - 00:23
#6
... det er ikke sådan at holde styr på de fede fingre på denne tid af døgnet... :)
12. april 2002 - 07:52
#7
Indtil videre tak, jeg tester det lige så snart jeg har tid, og melder herefter tilbage. mvh Christian H
13. april 2002 - 10:51
#8
Hej Thomas Det du har lavet virker fint, lige på nær at den kun sender mail til ham der bestiller varen, hvis jeg sætter en # foran printf("Mange tak for din bestilling! Bekræftelse er sendt til %s.", $FORM{'bemail'}); sender scriptet til mig, men så selvfølge ikke til ham, men det er faktisk OK, da jeg manuelt skal tilføje noget i ordre tilbagemeldingen, men det kunne da være rart at vide hvad der kunne være galt. Kunne du evt. besvare den sidste del af mit ? Hvordan man laver 2 knapper på den html side de bliver genereret, den ene skal være "tilbage til start" og den anden skal åbne "udskriv vinduet". Mvh. Christian H
13. april 2002 - 16:40
#9
det nemmeste vil nok være at finde nogle eksempler ude på nettet...
13. april 2002 - 20:18
#10
Hej Thomas. Hmmmmm, et lidt kedligt svar ;-), men jeg tildeler dig dine point nu, du har jo trods alt hjulpet mig med en del af mit ?, TAK for det. :-) Christian H
Kurser inden for grundlæggende programmering