Egyszerű virtuális áruház
Szerver oldali programozás Perl nyelven
Első lépésként el kell készíteni azt az űrlapot, ahol vagy bejelölhető a kiválasztott áru, vagy beírható a kívánt mennyiség egy szövegmezőbe. Itt használni fogjuk azt az űrlapelem-típust, amely adatot ad át a feldolgozó programnak, de az oldalon nem jelenik meg. Ez az adat tartalmazza majd az árat. Sorszámozni fogjuk, hogy ne keveredhessen össze a be nem jelölt, illetve meg nem rendelt árukkal. Nézzünk egy olyan példát, ahol mind a checkboxos, mind a szövegmezős változatot használjuk:
Az első űrlapelem (checkbox) "name" paramétere közömbös, a "value" viszont legyen egyenlő a megvásárolható mennyiséggel. Fontos, hogy a rejtett (hidden) űrlapelem közvetlenül a mennyiséget tartalmazó mező után kerüljön, így olyan elemek is beszúrhatók, amelyek nem kerülnek majd kiszámításra a végösszeg megállapításánál. A rejtett elem "name" paraméterének utolsó karaktereit egyesével felfelé kell sorszámozni a keveredés elkerülése miatt. A fenti példában a "mycgi" alkönyvtárban található "hshopbuy.cgi" lesz a Perl nyelvű feldolgozóprogram. Ennek analógiájára következzen egy olyan példa is, ahol a kívánt mennyiséget a látogató írja be:
darab.
[
]
A módszer előnye, hogy a fenti szabályok betartásával egy tetszőleges felépítésű oldalban bármennyi megvásárolható elemet bárhol felsorolhatunk. Az űrlaphoz tartozó Perl-scripttel két lépésben dolgozzuk fel a látogató által bevitt adatokat. Az elsőnél a következőket tesszük: szokásos módon megadjuk a szükséges útvonalakat, beállítjuk a MIME fájltípust és fejlécet, valamint hátteret definiálunk, megköszönjük az üzenetet, amelynek tartalmát alatta egy táblázatba foglaljuk:
#!/usr/local/bin/perl5 A szóban forgó Perl-program kimenetét feldolgoztatjuk egy második Perl-programmal, ezért nyitunk egy új formot amit a "getform.cgi"-vel fogunk kiértékelni a végösszeg elfogadása után, és definiálunk néhány változót:
$ar = 0; Ha az adatbeviteli mező tartalma nem "0", és nem is üres, akkor elkezdjük a feldolgozást: Definiálunk egy változót, amibe elmentjük az éppen aktuális árat tartalmazó mezőnevet ($valt), egy másikban pedig azt figyeljük, van-e az oldalban olyan mező, amely árat tartalmaz ($ar1), és az árat tartalmazó mezőt megszorozzuk a látogató által beírt mennyiséggel ($ar):
Ha a mező nem árat tartalmaz, akkor egyszerűen kiírjuk egy táblázat cellájába a mező nevét, és értékét:
if ($ar1 ne "Value_"){
Ha a mező árat tartalmaz, és az nem egyenlő nullával, akkor megszorozzuk a mennyiséggel, és azt is kiírjuk az aktuális táblázatcellába:
if ($FORM{"$valt"} != 0) {
Ha a $ar változó értéke nulla, nem írunk ki semmit a mezőnevek és azok értéke mögé, de elkezdjük öszszeadni az eddig összegyűlt értékeket a végső ár kiszámítása céljából:
if ($ar == 0){
Az itt kiszámolt adatokat és az eredeti űrlapba beírtakat majd átadjuk egy másik programnak további feldolgozásra, ezért ezeket rejtett űrlapmezőkbe írjuk. Színes csíkokkal díszítjük a táblázatot, megnöveljük 1-gyel az "i" változót, amely az így adódó sorszám alapján az árat tartalmazó mezőket összerendeli a mennyiség mezőkkel. Majd kiírjuk a táblázat utolsó sorába a végösszeget, ha már nincs több adat, és mindezt rejtett mezőbe is beírjuk, hogy átadásra kerüljön. Lezárjuk a formot, a táblázatot és a HTML-oldalt:
print "\n";
push (@INC, '/cgi-bin');
print "Content-type: text/html\n\n";
print "
print '';
print 'Köszönjük üzenetét!
';
print 'Kérjük ellenőrizze le mégegyszer mielőtt postázza!
';
print '';
";
print "$FORM{'subject'} ";
print '';
print '';
$i = 1;
print '
if ($value ne "" && $value ne "0"){
$valt = "Value_$i";
$ar1 = substr($name, 0, 6);
$ar = $FORM{"$valt"} * $value;
print "$name: $value ";
$tartalom = "$value";
$tartalom1 = "";
if ($ar != 0) {
print "$FORM{\"$valt\"} Ft. X $value = $ar Ft. ";
$tartalom1 = "$FORM{\"$valt\"} Ft. X $value = $ar Ft."; }
print " ";}
$vegar = ($vegar + $ar);
print "\n";}
if ($FORM{"$valt"} == 0){
print " ";
print ">tr>\n";}
print " ";
print "\n";}}
if ($ar1 eq "Value_"){
$i++;} } }
print "";
if ($vegar != 0){
print '>td bgcolor=#ffaaee align="center">';
print "
Összeg: $vegar Forint.
"; }
print "
if ($vegar != 0){
print "\n";}
print '
print '
Végül a "getform.cgi" programnak, amely közvetlenül a fenti CGI-scripthez csatlakozik, semmi más dolga nincs, mint hogy elpostázza címünkre a HTML-űrlap adatait, és mindazt, amit a "hshopbuy.cgi" programban kiszámoltunk, valamint ugyanezeket megjelenítse egy újabb oldalon:
#!/usr/local/bin/perl
push (@INC, '/cgi-bin');
$mailprog = '/usr/lib/sendmail';
$recipient = "lezli\@best.com";
print "Content-type: text/html\n\n";
print "
print "
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairsx = split(/&/, $buffer);
foreach $pairx (@pairsx) {
($name, $value) = split(/=/, $pairx);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/~!/ ~!/g;
print MAIL "$name: $value\n";
print "$name: $value
\n\n"; }
close (MAIL);
print "";
Kapcsolódó cikkek
- A magyar internetezők 45 százaléka vásárolt már on-line
- Pénzjutalmas online fejlesztői díj
- Megjelent az Adobe AIR és az Adobe Flex 3
- Pénzjutalmas online fejlesztői díj a Sanomától
- Újragondolja árait az eBay
- A magyar internet-használók eltérnek a nemzetközi trendektől
- Google: magyar nyelvű súgócsoport webmestereknek
- Árguru.hu: Új árösszehasonlító oldal indult
- Ötödével bővült az amerikai online kereskedelem
- Elsöpri az online piac a kiskereskedőket?