Cgi-ben hogyan lehet...

Cgi-ben hogyan lehet...
2004-03-18T13:16:02+01:00
2004-03-23T07:36:08+01:00
2022-10-19T14:15:41+02:00
VPeti
Sziasztok!
Az lenne a kérdésem, hogy hogyan tudom azt megcsinálni cgi-ben
(perl) hogy egy gomb megnyomására elindított cgi script kiírjon egy üzenetet
a böngészőablakba és elindítson egy fájl letöltést. Még csak nem régen kezdtem
el ezzel foglalkozni (mármint a cgi-vel meg a perl-el is), mert érdekel és szeretném
megtanulni, könyvem még egyenlőre nincsen sajnos csak ilyen netes anyagok
és azokban meg nem nagyon találtam megoldást a problémámra :(

Remélem tudtok segíteni, jelenleg itt tartok :

#!D:\\\\Perl\\\\bin $buffer=$ENV{"QUERY_STRING"}; if ($buffer eq "Down=Egerfogo&dbutton=Let%F6lt%E9s"){ $valodi = "../cgi-bin/eger.dat" . $ENV{"PATH_INFO"}; $nev = "Egérfogó"; $link = "<a Href=\\\\"../download/egersetup.zip\\\\">Letöltés</a>"; $loc = "document.location=\\\\"http://".$ENV{"HTTP_HOST"}."/download/egersetup.zip\\\\";" } if ($buffer eq "Down=Torpedo&dbutton=Let%F6lt%E9s"){ $valodi = "../cgi-bin/torpedo.dat" . $ENV{"PATH_INFO"}; $nev = "Torpedó"; $link = "<a Href=\\\\"../download/torpedo.zip\\\\">Letöltés</a>"; $loc = "document.location=\\\\"http://".$ENV{"HTTP_HOST"}."/download/torpedo.zip\\\\";" } if ($buffer eq "Down=Nevgenerator&dbutton=Let%F6lt%E9s"){ $valodi = "../cgi-bin/nevgen.dat" . $ENV{"PATH_INFO"}; $nev = "Névgenerátor"; $link = "<a Href=\\\\"../download/nevek.zip\\\\">Letöltés</a>"; $loc = "document.location=\\\\"http://".$ENV{"HTTP_HOST"}."/download/nevekzip\\\\";" } if ($buffer eq "Down=Marc&dbutton=Let%F6lt%E9s"){ $valodi = "../cgi-bin/marc.dat" . $ENV{"PATH_INFO"}; $nev = "Marc"; $link = "<a Href=\\\\"../download/marc_setup.zip\\\\">Letöltés</a>"; $loc = "document.location=\\\\"http://".$ENV{"HTTP_HOST"}."/download/marc_setup.zip\\\\";" } if ($buffer eq "Down=Lotto&dbutton=Let%F6lt%E9s"){ $valodi = "../cgi-bin/lotto.dat" . $ENV{"PATH_INFO"}; $nev = "Lottószám generátor"; $link = "<a Href=\\\\"../download/lottó_setup.zip\\\\">Letöltés</a>"; $loc = "document.location=\\\\"http://".$ENV{"HTTP_HOST"}."/download/lottó_setup.zip\\\\";" } if ($buffer eq "Down=Mailr&dbutton=Let%F6lt%E9s"){ $valodi = "../cgi-bin/mailr.dat" . $ENV{"PATH_INFO"}; $nev = "E-mail cím rejtő"; $link = "<a Href=\\\\"../download/mailr_setup.zip\\\\">Letöltés</a>"; $loc = "document.location=\\\\"http://".$ENV{"HTTP_HOST"}."/download/mailr_setup.zip\\\\";" } print "Content-type: text/html\\\\n\\\\n"; $win = 1 if $^O =~ /Win/; if (-e $valodi){ open(FAJL,"<$valodi") or die print "A fájl nem található."; unless ($win) { flock(FAJL,2); } @F = <FAJL>; unless ($win) { flock(FAJL,8); } close FAJL; } open(FAJL,">$valodi"); unless ($win) { flock(FAJL,2); }< $szamlalo=$F[0]; $szamlalo=$szamlalo+1; print FAJL $szamlalo; unless ($win) { flock(FAJL,8); } close FAJL; print <<vege;> <html> <head><title>.:Peti Oldala:.</title></head> <body bgcolor="#DDDDDD" Topmargin="30" Bottommargin="30" Leftmargin="0" Rightmargin="0" Text="#000000" link="#000080" vlink="#FF0000"> <center> <table bgcolor="#FFFFFF" border="1" width="90%" height="90%" cellspacing="0" cellpadding="0"> <tr> <td align="center" valign="middle"> <h2> Köszönöm hogy letöltötted a(z) $nev programomat <br> <i>A(z) $nev programot eddig $szamlalo -n töltötték le.</i> Ha a letöltés nem indulna el akkor kattints a linkre : $link <br><br><center><a href=\\\\"javascript:history.go(-1)\\\\">Vissza</a></center> </h2> </td> </tr> </table> </center> <script Language="Javascript"> $loc </SCRIPT> </html> vege exit;

Ettől a "Javascriptes" dologtól ugyan elindul a letöltés, de ezt nem tartom
a legjobb megoldásnak, mert a böngésző mintha még egy csomó ideig keresne utánna
(mondhatni az explorer jel forog a sarokban :) ).
Mutasd a teljes hozzászólást!
bocs, ennek a sornak a végére nem kell a ";

<META HTTP-EQUIV=REFRESH CONTENT="5; URL=$loc">";
Mutasd a teljes hozzászólást!

  • hello

    ha azt szeretnéd, hogy pl 5 másodperccel az oldal megjelenése után a böngésző ablaka egy másik url-re ugorjon át, (ahonnan le tudja tölteni a programot) akkor igy ird át a html fejlécet:

    <html>
    <head> <META HTTP-EQUIV=REFRESH CONTENT="5; URL=$loc">";
    <title>.:Peti Oldala:.</title></head>

    előtte a $loc változóból szedd ki a document.location=\\\\" részt.

    Miki
    Mutasd a teljes hozzászólást!
  • bocs, ennek a sornak a végére nem kell a ";

    <META HTTP-EQUIV=REFRESH CONTENT="5; URL=$loc">";
    Mutasd a teljes hozzászólást!
  • Köszönöm a segítségedet, bár nem elsősorban erre gondoltam, de ez is hasznos ötletnek tűnik. Igazság szerint a kérdésem feltétele előtt vagy két nappal kezdtem el foglalkozni a problémával perlt addig még csak nem is láttam úgyhogy a kérdésem is ezért lett ilyen rosszul megfogalmazva, persze idővel rájöttem hogy mit volt a baj és a letöltés befejezése után is miért tölt még mindig az explorer. A close FAJL; rész helyesen azthiszem ez a close (FAJL); és ez volt az oka, hogy nem állt le a letötlés vagy valami ilyesmi persze még most is abszolút kezdő vagyok ebben a témában, úgy hogy tanulom feszt tovább
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd