#!/usr/bin/perl
&parse;
$mailprog='/var/qmail/bin/qmail-inject';
if ($config{'action'} eq "additem") { &additem; }
elsif ($config{'action'} eq "removeitem") { &removeitem; }
elsif ($config{'action'} eq "viewcart") { &viewcart; }
elsif ($config{'action'} eq "tomail") { &tomail; }
else {
print "Content-type: text/html\n\n";
print "Nothing to do"; exit;
}
sub tomail {
print "Content-type: text/html\n";
if (&GetCookies('cart')) {
$mailcookie = "$Cookies{'cart'}";
$tobeadded = $mailcookie;
@msg = split(/\|/, $mailcookie);
if ($config{'email'} && @msg > 0) {
&sendmail;
print "\n Your order is processed .. Thank you ";
} else {
print "\n Nothing in cart or invalid e-mail\n";
}
} else {
print "\n Nothing in cart";
}
}
sub sendmail {
open (MAIL, "|$mailprog") || die "Can't open $mailprog!\n";
print MAIL "To: webmaster\@thaiall.com,$config{'email'}\n";
print MAIL "From: $config{'email'}\n";
print MAIL "Subject: shopping cart \n\n";
print MAIL "Dear sir\n Thank for your order\n";
print MAIL "Order by $config{'Name'}\n Address : $config{'Addr'}\n";
print MAIL "Pay type: $config{'CardType'} \n\n Order listing\n";
foreach $msg (@msg) {
($mquantity, $mprice, $mitem) = split(/:/ , $msg);
print MAIL "$mitem $mprice $mquantity\n";
}
&totalmny;
print MAIL "Total: $TheTotal\n";
print Mail "From IP: $ENV{'HTTP_REFERER'}";
close (MAIL);
}
sub viewcart {
print "Content-type: text/html\n";
if (&GetCookies('cart')) {
$viewcookie = "$Cookies{'cart'}";
$tobeadded = $viewcookie;
@dcarts = split(/\|/, $viewcookie);
print "\n View cart";
&incart;
} else {
print "\n Empty";
}
}
sub removeitem {
print "Content-type: text/html\n";
if (&GetCookies('cart')) {
(@ToBeModified) = split(/\|/, $Cookies{'cart'});
$KillNumber = $config{'number'};
splice(@ToBeModified,$KillNumber,1);
$tobeadded = "";
foreach $restd (@ToBeModified) {
if ($tobeadded eq "") { $tobeadded = $restd;
} else { $tobeadded = join "|",$tobeadded,$restd; }
push @dcarts,$restd;
}
&SetCookies('cart',$tobeadded);
print "\n Remove product in cart";
&incart;
}
}
sub totalmny {
$RunningTotal = 0;
(@tobetotaled) = split(/\|/, $tobeadded);
foreach $tobetotaled (@tobetotaled) {
($HowMany, $HowMuch, $What) = split(/:/, $tobetotaled);
$ItemTotal = $HowMany * $HowMuch;
$RunningTotal = $RunningTotal + $ItemTotal;
}
$TheTotal = $RunningTotal;
}
sub additem {
print "Content-type: text/html\n";
if (&GetCookies('cart')) {
$tobeadded="$Cookies{'cart'}\|$config{'quantity'}:$config{'price'}:$config{'item'}";
&SetCookies('cart',$tobeadded);
&totalmny;
@dcarts = split(/\|/, $tobeadded);
print "\n <b><u>Add new product</u></b>";
} else {
$newitem = "$config{'quantity'}:$config{'price'}:$config{'item'}";
&SetCookies('cart',$newitem);
$tobeadded = $newitem;
&totalmny;
@dcarts = split(/\|/, $newitem);
print "\n <b><u>First product</u></b>";
}
print "<br>Product:$config{'item'}<br>Quantity:$config{'quantity'}";
print "<br>Price:$config{'price'}<hr>";
&incart;
}
sub parse {
if ($ENV{'REQUEST_METHOD'} eq 'GET') {
@pairs = split(/&/, $ENV{'QUERY_STRING'});
} elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {
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;
$config{$name} = $value;
}
}
sub incart {
$RemoveNumber=0;
print "<table><tr><td>No</td><td>Product</td><td>Amount</td><td>Price</td><td>Total</td></tr>";
foreach $dcart (@dcarts) {
($quantity, $price, $item) = split(':',$dcart);
if ($quantity > "0") {
$seq = $RemoveNumber + 1;
print "<tr><td>$seq</td><td>$item</td><td>$quantity</td><td>$price</td><td align=right>";
printf("%.2f", $price*$quantity);
print "</td><td><a href=cartprocess.pl?action=removeitem\&number=$RemoveNumber>";
print "Remove</a></td></tr>";
$RemoveNumber++;
}
}
&totalmny;
print "<tr><td colspan=4 align=right>Total:</td><td align=right>";
printf("%.2f", $TheTotal);
print "</td></tr></table>";
print "<a href=cartprocess.pl?action=viewcart>viewcart</a> | <a href=cartprocess.htm>Product</a>";
print "<hr><form action=cartprocess.pl method=post><input type=hidden name=action value=tomail>";
print "<b>Check out</b><table><tr><td>E-mail</td><td><input type=text name=email></td></tr>";
print "<tr><td>Name-Surn</td><td><input type=text name=Name></td></tr>";
print "<tr><td>Address</td><td><input type=text name=Addr></td></tr>";
print "<tr><td>Pay type</td><td>";
print "<select name=CardType><option value=พกง>พกง<option value=โอนเงิน>โอนเงิน</select>";
print "</td></tr><tr><td><input type=Submit></td></tr></table></form>";
}
sub GetCookies {
local(@ReturnCookies) = @_;
local($cookie_flag) = 0;
local($cookie,$value);
if ($ENV{'HTTP_COOKIE'}) {
foreach (split(/; /,$ENV{'HTTP_COOKIE'})) {
($cookie,$value) = split(/=/);
foreach $ReturnCookie (@ReturnCookies) {
if ($ReturnCookie eq $cookie && $value) {
$Cookies{$cookie} = $value;
$cookie_flag = 1;
$cookiename = $cookie;
}
}
}
}
return $cookie_flag;
}
sub SetCookies {
local(@cookies) = @_;
($cookie,$value) = @cookies;
print 'Set-Cookie: '.$cookie.'='.$value."\n";
}
จำนวน : 167 บรรทัด