*** Script/Checkout Problems? ... Read inside ***

Get help with nopcart Perl, PHP or ASP checkout related issues.

Moderators: Koibito, Stefko, Randy

Re: *** Script/Checkout Problems? ... Read inside ***

Postby katnipg » Wed Jun 25, 2003 7:36 pm

I have read letter by letter symbol by symbol through my checkout.pl, I contacted my ISP to make certain that the mail string was correct, I've run it with & without the -t, & Iam still stumped. Only part of the information is being written to the orders.csv file & no email file at all. I downloaded Leech ftp program, reuploaded my checkout.pl using text only. But I cannot figure out how to set the comode command (chmod 755). I'm totally lost, I have been working on this for two days and I've either missed something in the script - several script log errors say "print() on closed filehandle MAIL at /checkout.pl line#

Can anyone help?

Thank you,
Kat

[*]Once the script files are installed, using FTP (TEXT TRANSFER ONLY!), you want to set the permissions on the script so that they are the equivalent of 755. This means that the owner can read-write-execute, group can read-execute, and others can read-execute. If you can login using telnet, you can issue the command: chmod 755 checkout.pl. Make sure to change the file permissions of the CSV file also!
[*]Test your script directly using your browser ( e.g. http://www.your_domain.com/cgi-bin/checkout.pl ). If it works it should return the 'The form you submitted was not complete.....' error message.
[*] If the script still doesn't work, repeat the process.
[/list]
katnipg
 
Posts: 6
Joined: Wed Dec 18, 2002 2:15 pm

Postby Steven Nyland » Wed Jun 25, 2003 9:25 pm

Well, lots of fooks have been there. Don't give up. It sometimes helps if someone else has a peek at it, or just leave it to rest for a day. Anyway, unfort it usually is a typo in most cases. Also, make sure the line feeds are Unix compatible.

Steven
[ If it ain't Dutch ... it ain't Much ]
Steven Nyland
Guru
 
Posts: 274
Joined: Thu Jan 02, 2003 1:20 pm
Location: Still here ...

Can't get it to work

Postby katnipg » Thu Jun 26, 2003 12:20 am

Please help. It only posts part of the fields to the csv file, no email. I do not want to sent a customer an email until I have reviewed the order so I took out the code for that. Added fields for credit card info & mucked about with the thank you part, the rest is as I downloaded it from this site.

my checkout.pl (with line#inserted for easy reference to error messages)

1 #!/usr/bin/perl -w
2 #=====================================================================||
3 # NOP Design JavaScript Shopping Cart ||
4 # PERL CGI Checkout Module ||
5 # ||
6 # For more information on SmartSystems, or how NOPDesign can help you ||
7 # Please visit us on the WWW at http://www.nopdesign.com ||
8 # ||
9 # Javascript portions of this shopping cart software are available as ||
10 # freeware from NOP Design. You must keep this comment unchanged in ||
11 # your code. For more information contact FreeCart@NopDesign.com. ||
12 # ||
13 # JavaScript Shop Module, V.4.3.0 ||
14 #=====================================================================||
15 # ||
16 # Function: Writes available form elements from the NOP ||
17 # Free Cart (http://www.nopdesign.com/freecart) ||
18 # and other form elements to an email file, and ||
19 # send user confirmation ||
20 # ||
21 #=====================================================================||
22 require 5.001;
23
24 ########################################################################
25 # #
26 # User defined variables: #
27 # $header - string value containing the complete #
28 # path of the HTML page header #
29 # $footer - string value containing the complete #
30 # path of the HTML page footer #
31 # $mailprogram - string value containing the complete path to #
32 # the sendmail binary on the system. #
33 # $youremail - string value containing the email address to #
34 # send catalog orders in EMAIL or BOTH modes #
35 # $returnpage - URL to send user when checkout is complete #
36 # $csvfilename - string value containing the complete #
37 # path of the user database. #
38 # $csvquote - string value containing what to use for quotes #
39 # in the csv file (typically "" or \") #
40 # $mode - string value containing 'EMAIL', 'FILE' or #
41 # 'BOTH' to determine if the script should send #
42 # an email to you with the new order, write the #
43 # order to a CSV file, or do both. #
44 ########################################################################
45 $header = "http:www.antelopecreekleather.com/header.html";
46 $footer = "http:www.antelopecreekleather.com/footer.html";
47 $mailprogram = "/usr/lib/sendmail -t";
48 $returnpage = "http://www.antelopecreekleather.com";
49 $youremail = "katnipg\@yahoo.com";
50 $csvfilename = "orders.csv";
51 $csvquote = "\"\"";
52 $mode = "BOTH";
53
54 #These are required fields. I recommend enforcing these by javascript,
55 #but let's just make sure here as well.
56 @required = (
57 'b_first',
58 'b_last',
59 'b_addr',
60 'b_city',
61 'b_state',
62 'b_zip',
63 'b_phone',
64 'b_email'
65 );
66
67 ##############################################################
68 #FUNCTION: urlDecode #
69 #RETURNS: The decoded string. #
70 #PARAMETERS: An encoded string. #
71 #PURPOSE: Decodes a URL encoded string. #
72 ##############################################################
73 sub urlDecode {
74 my ($string) = @_;
75 $string =~ tr/+/ /;
76 $string =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex($1))/eg;
77 $string =~ s/['"]/\'/g;
78 return ($string);
79 }
80
81 ##############################################################
82 #FUNCTION: processCGI #
83 #RETURNS: #
84 #PARAMETERS: #
85 #PURPOSE: Retrieves form data submitted via the 'GET' #
86 # method and decodes it. You may then access #
87 # the passed in variables via calls to $[name] #
88 # where [name] is the name of the form element. #
89 ##############################################################
90 sub processCGI {
91 local ($cgiData, $key, $value, $pair, @pairs);
92
93 if ($ENV{'REQUEST_METHOD'} eq 'GET') { $cgiData = $ENV{'QUERY_STRING'}; }
94 else { $cgiData = <STDIN>; }
95 @pairs = split (/&/, $cgiData);
96 foreach $pair (@pairs) {
97 ($key, $value) = split (/\=/, $pair);
98 $key = &urlDecode($key);
99 $value = &urlDecode($value);
100 if(defined ${$key}){
101 ${$key} .= ", ".$value;
102 }else{
103 ${$key} = $value;
104 }
105 }
106 }
107
108 ##############################################################
109 #FUNCTION: doFormError #
110 #RETURNS: #
111 #PARAMETERS: A error message string. #
112 #PURPOSE: Generates an HTML page indicating a form #
113 # submission error occurred. #
114 ##############################################################
115 sub doFormError {
116 my ($errString) = @_;
117
118 open (HEAD, $header);
119 @LINES = <HEAD>;
120 close HEAD;
121
122 print "Content-type: text/html\n\n";
123
124 print @LINES;
125
126 print "<FONT SIZE=+2>The form you submitted was not complete.<BR><BR></FONT>";
127 print "$errString<BR><BR>\n";
128 print "<INPUT TYPE=BUTTON ONCLICK='history.back()' VALUE=' Return to the checkout page '><HR>";
129
130 open (FOOT, $footer);
131 @LINES = <FOOT>;
132 close FOOT;
133 print @LINES;
134
135 exit;
136 }
137
138 ##############################################################
139 #FUNCTION: doError #
140 #RETURNS: #
141 #PARAMETERS: A error message string. #
142 #PURPOSE: Generates an HTML page indicating an error #
143 # occurred. #
144 ##############################################################
145 sub doError {
146 my ($errString) = @_;
147 print "Content-type: text/html\n\n";
148
149 open (HEAD, $header);
150 @LINES = <HEAD>;
151 close HEAD;
152
153 print @LINES;
154
155 print "$errString<BR><BR>\n";
156
157 open (FOOT, $footer);
158 @LINES = <FOOT>;
159 close FOOT;
160 print @LINES;
161
162 exit;
163 }
164
165 ##############################################################
166 #FUNCTION: invalidE #
167 #RETURNS: 1 if invalid, 0 if valid. #
168 #PARAMETERS: An email address variable. #
169 #PURPOSE: Checks to see if a submitted email address is #
170 # of the valid form 'x@y'. #
171 ##############################################################
172 sub invalidE {
173 my ($szEmail) = @_;
174 my ($user, $host);
175
176 $szEmail =~ tr/A-Z/a-z/;
177 if ($szEmail =~ /\s/) { return 1; }
178 ($user, $host) = split (/\@/, $szEmail);
179 if ($host =~ /compuserve/i) { ; }
180 else {
181 if (! $user =~ /\D/) { return 1; }
182 if (! $host =~ /\D/) { return 1; }
183 if (substr ($user,0,1) !~ /[a-z]/) { return 1; }
184 }
185 if ($szEmail =~ /\w+\@[\w|\.]/) { return 0; }
186 else { return 1; }
187 }
188
189
190 sub populateDateVar {
191 @months = ();
192 push(@months,"January");
193 push(@months,"February");
194 push(@months,"March");
195 push(@months,"April");
196 push(@months,"May");
197 push(@months,"June");
198 push(@months,"July");
199 push(@months,"August");
200 push(@months,"September");
201 push(@months,"October");
202 push(@months,"November");
203 push(@months,"December");
204 @days = ();
205 push(@days,"Sunday");
206 push(@days,"Monday");
207 push(@days,"Tuesday");
208 push(@days,"Wednesday");
209 push(@days,"Thursday");
210 push(@days,"Friday");
211 push(@days,"Saturday");
212 ($sec,$min,$hour,$day,$month,$year,$day2) =
213 (localtime(time))[0,1,2,3,4,5,6];
214 if ($sec < 10) { $sec = "0$sec"; }
215 if ($min < 10) { $min = "0$min"; }
216 if ($hour < 10) { $hour = "0$hour"; }
217 if ($day < 10) { $day = "0$day"; }
218 $year += "1900";
219
220 #$todaysdate = "$months[$month] $day, $year $hour:$min:$sec";
221 }
222
223
224 ##############################################################
225 ##############################################################
226 ### MAIN ###
227 ##############################################################
228 ##############################################################
229
230 # process the form input.
231 &processCGI;
232 &populateDateVar;
233
234 foreach $check(@required) {
235 unless ($check) {
236 doFormError("It appears that you forgot to fill in the <strong>$check</strong> field.");
237 exit;
238 }
239 }
240
241 # checks for valid email address
242 if( &invalidE($b_email) ){
243 doFormError('You submitted an invalid email address.');
244 }
245
246
247 if( $mode eq "BOTH" || $mode eq "EMAIL") {
248 # Send email order to you...
249 open (MAIL,"|$mailprogram");
250 print MAIL "To: $youremail\n";
251 print MAIL "From: $b_email\n";
252 print MAIL "Subject: New Online Order\n";
253 print MAIL "\n\n";
254 print MAIL "A new order has been received. A summary of this order appears below.\n";
255 print MAIL "\n";
256 print MAIL "Order Date: $months[$month] $day, $year $hour:$min:$sec \n";
257 print MAIL " \n";
258 print MAIL "Bill To: \n";
259 print MAIL "-------- \n";
260 print MAIL " $b_first $b_last \n";
261 print MAIL " $b_addr \n";
262 print MAIL " $b_addr2 \n";
263 print MAIL " $b_city, $b_state $b_zip \n";
264 print MAIL " $b_phone \n";
265 print MAIL " $b_fax \n";
266 print MAIL " $b_email \n";
267 print MAIL " \n";
268 print MAIL " \n";
269 print MAIL "Ship To: \n";
270 print MAIL "-------- \n";
271 print MAIL " $s_first $s_last \n";
272 print MAIL " $s_addr \n";
273 print MAIL " $s_addr2 \n";
274 print MAIL " $s_city, $s_state $s_zip \n";
275 print MAIL " $s_phone \n";
276 print MAIL " \n";
277 print MAIL " \n";
278 print MAIL "Qty Price(\$) Product ID - Product Name\n";
279 print MAIL "===================================================================== \n";
280 print MAIL "$QUANTITY_1 \$$PRICE_1 $ID_1 - $NAME_1 $ADDTLINFO_1 \n";
281 if( $NAME_2 ) {print MAIL "$QUANTITY_2 \$$PRICE_2 $ID_2 - $NAME_2 $ADDTLINFO_2 \n";}
282 if( $NAME_3 ) {print MAIL "$QUANTITY_3 \$$PRICE_3 $ID_3 - $NAME_3 $ADDTLINFO_3 \n";}
283 if( $NAME_4 ) {print MAIL "$QUANTITY_4 \$$PRICE_4 $ID_4 - $NAME_4 $ADDTLINFO_4 \n";}
284 if( $NAME_5 ) {print MAIL "$QUANTITY_5 \$$PRICE_5 $ID_5 - $NAME_5 $ADDTLINFO_5 \n";}
285 if( $NAME_6 ) {print MAIL "$QUANTITY_6 \$$PRICE_6 $ID_6 - $NAME_6 $ADDTLINFO_6 \n";}
286 if( $NAME_7 ) {print MAIL "$QUANTITY_7 \$$PRICE_7 $ID_7 - $NAME_7 $ADDTLINFO_7 \n";}
287 if( $NAME_8 ) {print MAIL "$QUANTITY_8 \$$PRICE_8 $ID_8 - $NAME_8 $ADDTLINFO_8 \n";}
288 if( $NAME_9 ) {print MAIL "$QUANTITY_9 \$$PRICE_9 $ID_9 - $NAME_9 $ADDTLINFO_9 \n";}
289 if( $NAME_10 ){print MAIL "$QUANTITY_10 \$$PRICE_10 $ID_10 - $NAME_10 $ADDTLINFO_10 \n";}
290 if( $NAME_11 ){print MAIL "$QUANTITY_11 \$$PRICE_11 $ID_11 - $NAME_11 $ADDTLINFO_11 \n";}
291 if( $NAME_12 ){print MAIL "$QUANTITY_12 \$$PRICE_12 $ID_12 - $NAME_12 $ADDTLINFO_12 \n";}
292 if( $NAME_13 ){print MAIL "$QUANTITY_13 \$$PRICE_13 $ID_13 - $NAME_13 $ADDTLINFO_13 \n";}
293 print MAIL "===================================================================== \n";
294 print MAIL "SUBTOTAL: $SUBTOTAL \n";
295 print MAIL "TOTAL: $TOTAL \n";
296 print MAIL "\n";
297 print MAIL "FREIGHT: $SHIPPING \n";
298 print MAIL "\n\n";
299 print MAIL "Comments: \n";
300 print MAIL "--------- \n";
301 print MAIL "$comment \n";
302 print MAIL " \n";
303 print MAIL "Name on Credit Card: \n";
304 print MAIL "$ccfirst \n";
305 print MAIL "$cclast \n";
306 print MAIL "Card Type: \n";
307 print MAIL "$CardType \n";
308 print MAIL "Card Number: \n";
309 print MAIL "$CardNumber \n";
310 print MAIL "Expiration Date: \n";
311 print MAIL "$ExpMon \n";
312 print MAIL "$ExpYear \n";
313 print MAIL "\",\"";
314 close MAIL;
315 }
316
317
318 if( $mode eq "BOTH" || $mode eq "FILE") {
319
320 $csvcomments = $comment;
321 #$csvcomments =~ s/\"/$csvquote/ig;
322
323 open (CSVF,">>$csvfilename");
324 print CSVF "\"";
325 print CSVF "$months[$month] $day, $year $hour:$min:$sec";
326 print CSVF "\",\"";
327 print CSVF "$b_first";
328 print CSVF "\",\"";
329 print CSVF "$b_last";
330 print CSVF "\",\"";
331 print CSVF "$b_addr";
332 print CSVF "\",\"";
333 print CSVF "$b_addr2";
334 print CSVF "\",\"";
335 print CSVF "$b_city";
336 print CSVF "\",\"";
337 print CSVF "$b_state";
338 print CSVF "\",\"";
339 print CSVF "$b_zip";
340 print CSVF "\",\"";
341 print CSVF "$b_phone";
342 print CSVF "\",\"";
343 print CSVF "$b_fax";
344 print CSVF "\",\"";
345 print CSVF "$b_email";
346 print CSVF "\",\"";
347 print CSVF "$s_first";
348 print CSVF "\",\"";
349 print CSVF "$s_last";
350 print CSVF "\",\"";
351 print CSVF "$s_addr";
352 print CSVF "\",\"";
353 print CSVF "$s_addr2";
354 print CSVF "\",\"";
355 print CSVF "$s_city";
356 print CSVF "\",\"";
357 print CSVF "$s_state";
358 print CSVF "\",\"";
359 print CSVF "$s_zip";
360 print CSVF "\",\"";
361 print CSVF "$s_phone";
362 print CSVF "\",\"";
363 print CSVF "$QUANTITY_1";
364 print CSVF "\",\"";
365 print CSVF "\$$PRICE_1";
366 print CSVF "\",\"";
367 print CSVF "$ID_1";
368 print CSVF "\",\"";
369 print CSVF "$NAME_1";
370 print CSVF "\",\"";
371 print CSVF "$ADDTLINFO_1";
372 print CSVF "\",\"";
373 print CSVF "$QUANTITY_2";
374 print CSVF "\",\"";
375 print CSVF "\$$PRICE_2";
376 print CSVF "\",\"";
377 print CSVF "$ID_2";
378 print CSVF "\",\"";
379 print CSVF "$NAME_2";
380 print CSVF "\",\"";
381 print CSVF "$ADDTLINFO_2";
382 print CSVF "\",\"";
383 print CSVF "$QUANTITY_3";
384 print CSVF "\",\"";
385 print CSVF "\$$PRICE_3";
386 print CSVF "\",\"";
387 print CSVF "$ID_3";
388 print CSVF "\",\"";
389 print CSVF "$NAME_3";
390 print CSVF "\",\"";
391 print CSVF "$ADDTLINFO_3";
392 print CSVF "\",\"";
393 print CSVF "$QUANTITY_4";
394 print CSVF "\",\"";
395 print CSVF "\$$PRICE_4";
396 print CSVF "\",\"";
397 print CSVF "$ID_4";
398 print CSVF "\",\"";
399 print CSVF "$NAME_4";
400 print CSVF "\",\"";
401 print CSVF "$ADDTLINFO_4";
402 print CSVF "\",\"";
403 print CSVF "$QUANTITY_5";
404 print CSVF "\",\"";
405 print CSVF "\$$PRICE_5";
406 print CSVF "\",\"";
407 print CSVF "$ID_5";
408 print CSVF "\",\"";
409 print CSVF "$NAME_5";
410 print CSVF "\",\"";
411 print CSVF "$ADDTLINFO_5";
412 print CSVF "\",\"";
413 print CSVF "$QUANTITY_6";
414 print CSVF "\",\"";
415 print CSVF "\$$PRICE_6";
416 print CSVF "\",\"";
417 print CSVF "$ID_6";
418 print CSVF "\",\"";
419 print CSVF "$NAME_6";
420 print CSVF "\",\"";
421 print CSVF "$ADDTLINFO_6";
422 print CSVF "\",\"";
423 print CSVF "$QUANTITY_7";
424 print CSVF "\",\"";
425 print CSVF "\$$PRICE_7";
426 print CSVF "\",\"";
427 print CSVF "$ID_7";
428 print CSVF "\",\"";
429 print CSVF "$NAME_7";
430 print CSVF "\",\"";
431 print CSVF "$ADDTLINFO_7";
432 print CSVF "\",\"";
433 print CSVF "$QUANTITY_8";
434 print CSVF "\",\"";
435 print CSVF "\$$PRICE_8";
436 print CSVF "\",\"";
437 print CSVF "$ID_8";
438 print CSVF "\",\"";
439 print CSVF "$NAME_8";
440 print CSVF "\",\"";
441 print CSVF "$ADDTLINFO_8";
442 print CSVF "\",\"";
443 print CSVF "$QUANTITY_9";
444 print CSVF "\",\"";
445 print CSVF "\$$PRICE_9";
446 print CSVF "\",\"";
447 print CSVF "$ID_9";
448 print CSVF "\",\"";
449 print CSVF "$NAME_9";
450 print CSVF "\",\"";
451 print CSVF "$ADDTLINFO_9";
452 print CSVF "\",\"";
453 print CSVF "$QUANTITY_10";
454 print CSVF "\",\"";
455 print CSVF "\$$PRICE_10";
456 print CSVF "\",\"";
457 print CSVF "$ID_10";
458 print CSVF "\",\"";
459 print CSVF "$NAME_10";
460 print CSVF "\",\"";
461 print CSVF "$ADDTLINFO_10";
462 print CSVF "\",\"";
463 print CSVF "$QUANTITY_11";
464 print CSVF "\",\"";
465 print CSVF "\$$PRICE_11";
466 print CSVF "\",\"";
467 print CSVF "$ID_11";
468 print CSVF "\",\"";
469 print CSVF "$NAME_11";
470 print CSVF "\",\"";
471 print CSVF "$ADDTLINFO_11";
472 print CSVF "\",\"";
473 print CSVF "$QUANTITY_12";
474 print CSVF "\",\"";
475 print CSVF "\$$PRICE_12";
476 print CSVF "\",\"";
477 print CSVF "$ID_12";
478 print CSVF "\",\"";
479 print CSVF "$NAME_12";
480 print CSVF "\",\"";
481 print CSVF "$ADDTLINFO_12";
482 print CSVF "\",\"";
483 print CSVF "$QUANTITY_13";
484 print CSVF "\",\"";
485 print CSVF "\$$PRICE_13";
486 print CSVF "\",\"";
487 print CSVF "$ID_13";
488 print CSVF "\",\"";
489 print CSVF "$NAME_13";
490 print CSVF "\",\"";
491 print CSVF "$ADDTLINFO_13";
492 print CSVF "\",\"";
493 print CSVF "$SUBTOTAL";
494 print CSVF "\",\"";
495 print CSVF "$TOTAL";
496 print CSVF "\",\"";
497 print CSVF "$SHIPPING";
498 print CSVF "\",\"";
499 print CSVF "$comment";
500 print CSVF "\",\"";
501 print CSVF "$ccfirst";
502 print CSVF "\",\"";
503 print CSVF "$cclast";
504 print CSVF "\",\"";
505 print CSVF "$CardType";
506 print CSVF "\",\"";
507 print CSVF "$CardNumber";
508 print CSVF "\",\"";
509 print CSVF "$ExpMon";
510 print CSVF "\",\"";
511 print CSVF "$ExpYear";
512 print CSVF "\"\n";
513 close CSVF;
514 }
515
516
517
518
519 print "Content-type: text/html\n\n";
520
521 open (HEAD, $header);
522 @LINES = <HEAD>;
523 close HEAD;
524 print @LINES;
525
526 print "<p align=center>";
527 print "<img src=images/bannerc.jpg>";
528 print "<body background =images/bckgrnd1.jpg>";
529 print "<h2><font color=#FFFF00 face=Rockwell>Thank you</h2></font>";
530 print "<font color=#FFFF00 face=Rockwell LINK=#FFFF00 VLINK=FF8000 ALINK=FF0000>Thank you for your order from our online store. You will receive a confirmation email of your order with final cost including shipping, handling and any applicable COD charges shortly. Please contact us at $youremail if you have any questions or concerns.</p>";
531 print "<P>";
532 print "<A HREF=\"$returnpage\" target=_top><font color=#FFFF00 face=Rockwell LINK=#FFFF00 VLINK=FFFF00 ALINK=FFFF00>Return Home</A></FONT>";
533 print "<P>";
534
535 open (FOOT, $footer);
536 @LINES = <FOOT>;
537 close FOOT;
538
539 print @LINES;
540
541 exit;

The error log:

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Name "main::day2" used only once: possible typo at /checkout.pl line 212.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Name "main::csvquote" used only once: possible typo at /checkout.pl line 51.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Name "main::csvcomments" used only once: possible typo at /checkout.pl line 320.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Can't exec "/usr/lib/sendmail": No such file or directory at /checkout.pl line 249, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 250, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 251, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 252, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 253, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 254, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 255, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 256, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 257, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 258, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 259, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 260, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 261, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 262, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 263, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 264, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 265, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 266, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 267, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 268, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 269, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 270, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 271, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 272, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 273, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 274, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 275, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 276, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 277, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 278, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 279, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 280, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 293, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 294, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 295, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 296, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 297, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 298, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 299, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 300, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 301, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 302, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 303, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 304, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 305, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 306, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 307, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 308, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 309, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 310, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 311, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 312, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
print() on closed filehandle MAIL at /checkout.pl line 313, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 373, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in concatenation (.) or string at /checkout.pl line 375, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 377, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 379, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 381, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 383, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in concatenation (.) or string at /checkout.pl line 385, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 387, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 389, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 391, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 393, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in concatenation (.) or string at /checkout.pl line 395, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 397, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 399, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 401, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 403, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in concatenation (.) or string at /checkout.pl line 405, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 407, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 409, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 411, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 413, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in concatenation (.) or string at /checkout.pl line 415, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 417, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 419, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 421, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 423, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in concatenation (.) or string at /checkout.pl line 425, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 427, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 429, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 431, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 433, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in concatenation (.) or string at /checkout.pl line 435, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 437, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 439, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 441, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 443, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in concatenation (.) or string at /checkout.pl line 445, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 447, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 449, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 451, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 453, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in concatenation (.) or string at /checkout.pl line 455, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 457, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 459, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 461, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 463, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in concatenation (.) or string at /checkout.pl line 465, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 467, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 469, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 471, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 473, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in concatenation (.) or string at /checkout.pl line 475, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 477, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 479, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 481, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 483, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in concatenation (.) or string at /checkout.pl line 485, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 487, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 489, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
Use of uninitialized value in string at /checkout.pl line 491, <STDIN> line 1.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
readline() on closed filehandle HEAD at /checkout.pl line 522.

%% [Wed Jun 25 17:30:39 2003] POST /checkout.pl HTTP/1.1
%% 200 /z/dr/antelopecreek@sbcglobal.net/us1/checkout.pl
%error
readline() on closed filehandle FOOT at /checkout.pl line 536.



Me-> :cry:
katnipg
 
Posts: 6
Joined: Wed Dec 18, 2002 2:15 pm

Let's chmod

Postby Michael » Thu Jun 26, 2003 6:55 pm

First let's try something simple ("if it's not the code it's the computer" - Michael the Wise) - Chmod your file

Go to your site and hilight/select the file. You may be able to select properties.
If so then you need to set the three properties of a file:
Owner - Execute
Group - Execute
Client - Execute

Different ftp tools may do it different ways (I use SmartFTP by the way).
When you're setting the executable property you're allowing everyone to "use" the file. If that doesn't work or you still aren't sure about chmod call, we're here to help.


8)
http://www.sterling-bond.com - Escrow merchant accounts. Creating A World Of Trust.
"/" Stroke, what you do to make a woman happy.
"\" Backstroke, what you do to a woman after you've made her happy.
Michael
 
Posts: 80
Joined: Fri Aug 09, 2002 10:18 pm
Location: UK

Postby katnipg » Fri Jun 27, 2003 5:45 pm

Got it to work!! Thanks for all your help

:D Kat
katnipg
 
Posts: 6
Joined: Wed Dec 18, 2002 2:15 pm

Email& CSV product fix

Postby krismcewan » Tue Aug 26, 2003 8:48 pm

has anyone actually fixed this and if so can someone post it.
All the posts i have read so far dont actually fix the problem.

My chmods are fine,
my script runs ok,
i get the mail so does my customer but no products or totals.
the csv file updates but no product or totals.

My website is live but worldpay wont let me take online payments untill this is fixed so this is costing me money.

Please someone help.

Chris
krismcewan
 
Posts: 13
Joined: Mon Aug 25, 2003 6:02 am
Location: Scotland

Products & totals in script

Postby Michael » Tue Aug 26, 2003 9:04 pm

Well my first, and only thought is to ask if the product details and totals variables are included in the scripts?

8)

Remember the cute little vairables have to scamper over from the cart to the php/pl script before they can drop into their proper places, so it looks like you've got a break in the chain somewhere.

Identify a variable in the cart that's missing in the output then trace it through the code and see where the little critter's going astray.

:lol:
http://www.sterling-bond.com - Escrow merchant accounts. Creating A World Of Trust.
"/" Stroke, what you do to make a woman happy.
"\" Backstroke, what you do to a woman after you've made her happy.
Michael
 
Posts: 80
Joined: Fri Aug 09, 2002 10:18 pm
Location: UK

thanks

Postby krismcewan » Tue Aug 26, 2003 9:09 pm

I thought that as well but the cart is filtering through perfectly to Worldpay.

I am a windows man and all this scripting is putting my poor wee brain to sleep.

I will post my checkout.pl to see if i am doing anything silly.
my checkout.html page is http://www.chinesedresses.co.uk/checkout.html

chris


#!/usr/bin/perl
#=====================================================================||
# NOP Design JavaScript Shopping Cart ||
# PERL CGI Checkout Module ||
# ||
# For more information on SmartSystems, or how NOPDesign can help you ||
# Please visit us on the WWW at http://www.nopdesign.com ||
# ||
# Javascript portions of this shopping cart software are available as ||
# freeware from NOP Design. You must keep this comment unchanged in ||
# your code. For more information contact FreeCart@NopDesign.com. ||
# ||
# JavaScript Shop Module, V.4.4.0 ||
#=====================================================================||
# ||
# Function: Writes available form elements from the NOP ||
# Free Cart (http://www.nopdesign.com/freecart) ||
# and other form elements to an email file, and ||
# send user confirmation ||
# ||
#=====================================================================||
require 5.001;

########################################################################
# #
# User defined variables: #
# $header - string value containing the complete #
# path of the HTML page header #
# $footer - string value containing the complete #
# path of the HTML page footer #
# $mailprogram - string value containing the complete path to #
# the sendmail binary on the system. #
# $youremail - string value containing the email address to #
# send catalog orders in EMAIL or BOTH modes #
# **Don't forget to put a \ before the @ in your #
# email address. ie. spam\@nopdesign.com*** #
# $returnpage - URL to send user when checkout is complete #
# $csvfilename - string value containing the complete #
# path of the user database. #
# $csvquote - string value containing what to use for quotes #
# in the csv file (typically "" or \") #
# $mode - string value containing 'EMAIL', 'FILE' or #
# 'BOTH' to determine if the script should send #
# an email to you with the new order, write the #
# order to a CSV file, or do both. #
########################################################################
$header = "/header.html";
$footer = "/footer.html";
$thank = "/thank.html";
$mailprogram = "/usr/sbin/sendmail -t";
$returnpage = "/thank.html";
$youremail = "orders\@chinesedresses.co.uk";
$csvfilename = "orders.csv";
$csvquote = "\"\"";
$mode = "BOTH";


#These are required fields. I recommend enforcing these by javascript,
#but let's just make sure here as well.
@required = (
'b_first',
'b_last',
'b_addr',
'b_city',
'b_state',
'b_zip',
'b_phone',
'b_email'
);

##############################################################
#FUNCTION: urlDecode #
#RETURNS: The decoded string. #
#PARAMETERS: An encoded string. #
#PURPOSE: Decodes a URL encoded string. #
##############################################################
sub urlDecode {
my ($string) = @_;
$string =~ tr/+/ /;
$string =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex($1))/eg;
$string =~ s/['"]/\'/g;
return ($string);
}

##############################################################
#FUNCTION: processCGI #
#RETURNS: #
#PARAMETERS: #
#PURPOSE: Retrieves form data submitted via the 'GET' #
# method and decodes it. You may then access #
# the passed in variables via calls to $[name] #
# where [name] is the name of the form element. #
##############################################################
sub processCGI {
local ($cgiData, $key, $value, $pair, @pairs);

if ($ENV{'REQUEST_METHOD'} eq 'GET') { $cgiData = $ENV{'QUERY_STRING'}; }
else { $cgiData = <STDIN>; }
@pairs = split (/&/, $cgiData);
foreach $pair (@pairs) {
($key, $value) = split (/\=/, $pair);
$key = &urlDecode($key);
$value = &urlDecode($value);
if(defined ${$key}){
${$key} .= ", ".$value;
}else{
${$key} = $value;
}
}
}

##############################################################
#FUNCTION: doFormError #
#RETURNS: #
#PARAMETERS: A error message string. #
#PURPOSE: Generates an HTML page indicating a form #
# submission error occurred. #
##############################################################
sub doFormError {
my ($errString) = @_;

open (HEAD, $header);
@LINES = <HEAD>;
close HEAD;

print "Content-type: text/html\n\n";

print @LINES;

print "<FONT SIZE=+2>The form you submitted was not complete.<BR><BR></FONT>";
print "$errString<BR><BR>\n";
print "<INPUT TYPE=BUTTON ONCLICK='history.back()' VALUE=' Return to the checkout page '><HR>";

open (FOOT, $footer);
@LINES = <FOOT>;
close FOOT;
print @LINES;

exit;
}

##############################################################
#FUNCTION: doError #
#RETURNS: #
#PARAMETERS: A error message string. #
#PURPOSE: Generates an HTML page indicating an error #
# occurred. #
##############################################################
sub doError {
my ($errString) = @_;
print "Content-type: text/html\n\n";

open (HEAD, $header);
@LINES = <HEAD>;
close HEAD;

print @LINES;

print "$errString<BR><BR>\n";

open (FOOT, $footer);
@LINES = <FOOT>;
close FOOT;
print @LINES;

exit;
}

##############################################################
#FUNCTION: invalidE #
#RETURNS: 1 if invalid, 0 if valid. #
#PARAMETERS: An email address variable. #
#PURPOSE: Checks to see if a submitted email address is #
# of the valid form 'x@y'. #
##############################################################
sub invalidE {
my ($szEmail) = @_;
my ($user, $host);

$szEmail =~ tr/A-Z/a-z/;
if ($szEmail =~ /\s/) { return 1; }
($user, $host) = split (/\@/, $szEmail);
if ($host =~ /compuserve/i) { ; }
else {
if (! $user =~ /\D/) { return 1; }
if (! $host =~ /\D/) { return 1; }
if (substr ($user,0,1) !~ /[a-z]/) { return 1; }
}
if ($szEmail =~ /\w+\@[\w|\.]/) { return 0; }
else { return 1; }
}


sub populateDateVar {
@months = ();
push(@months,"January");
push(@months,"February");
push(@months,"March");
push(@months,"April");
push(@months,"May");
push(@months,"June");
push(@months,"July");
push(@months,"August");
push(@months,"September");
push(@months,"October");
push(@months,"November");
push(@months,"December");
@days = ();
push(@days,"Sunday");
push(@days,"Monday");
push(@days,"Tuesday");
push(@days,"Wednesday");
push(@days,"Thursday");
push(@days,"Friday");
push(@days,"Saturday");
($sec,$min,$hour,$day,$month,$year,$day2) =
(localtime(time))[0,1,2,3,4,5,6];
if ($sec < 10) { $sec = "0$sec"; }
if ($min < 10) { $min = "0$min"; }
if ($hour < 10) { $hour = "0$hour"; }
if ($day < 10) { $day = "0$day"; }
$year += "1900";

#$todaysdate = "$months[$month] $day, $year $hour:$min:$sec";
}


##############################################################
##############################################################
### MAIN ###
##############################################################
##############################################################

# process the form input.
&processCGI;
&populateDateVar;

foreach $check(@required) {
unless ($check) {
doFormError("It appears that you forgot to fill in the <strong>$check</strong> field.");
exit;
}
}

# checks for valid email address
if( &invalidE($b_email) ){
doFormError('You submitted an invalid email address.');
}


if( $mode eq "BOTH" || $mode eq "EMAIL") {
# Send email order to you...
open (MAIL,"|$mailprogram");
print MAIL "To: $youremail\n";
print MAIL "From: $b_email\n";
print MAIL "Subject: New Online Order\n";
print MAIL "\n\n";
print MAIL "A new order has been received. A summary of this order appears below.\n";
print MAIL "\n";
print MAIL "Order Date: $months[$month] $day, $year $hour:$min:$sec \n";
print MAIL " \n";
print MAIL "Bill To: \n";
print MAIL "-------- \n";
print MAIL " $b_first $b_last \n";
print MAIL " $b_addr \n";
print MAIL " $b_addr2 \n";
print MAIL " $b_city, $b_state $b_zip \n";
print MAIL " $b_phone \n";
#print MAIL " $b_fax \n";
print MAIL " $b_email \n";
print MAIL " \n";
print MAIL " \n";
print MAIL "Ship To: \n";
print MAIL "-------- \n";
print MAIL " $s_first $s_last \n";
print MAIL " $s_addr \n";
print MAIL " $s_addr2 \n";
print MAIL " $s_city, $s_state $s_zip \n";
print MAIL " $s_phone \n";
print MAIL " \n";
print MAIL " \n";
print MAIL "Qty Price(\£) Product ID - Product Name\n";
print MAIL "===================================================================== \n";
print MAIL "$QUANTITY_1 \£$PRICE_1 $ID_1 - $NAME_1 $ADDTLINFO_1 \n";
if( $NAME_2 ) {print MAIL "$QUANTITY_2 \£$PRICE_2 $ID_2 - $NAME_2 $ADDTLINFO_2 \n";}
if( $NAME_3 ) {print MAIL "$QUANTITY_3 \£$PRICE_3 $ID_3 - $NAME_3 $ADDTLINFO_3 \n";}
if( $NAME_4 ) {print MAIL "$QUANTITY_4 \£$PRICE_4 $ID_4 - $NAME_4 $ADDTLINFO_4 \n";}
if( $NAME_5 ) {print MAIL "$QUANTITY_5 \£$PRICE_5 $ID_5 - $NAME_5 $ADDTLINFO_5 \n";}
if( $NAME_6 ) {print MAIL "$QUANTITY_6 \£$PRICE_6 $ID_6 - $NAME_6 $ADDTLINFO_6 \n";}
if( $NAME_7 ) {print MAIL "$QUANTITY_7 \£$PRICE_7 $ID_7 - $NAME_7 $ADDTLINFO_7 \n";}
if( $NAME_8 ) {print MAIL "$QUANTITY_8 \£$PRICE_8 $ID_8 - $NAME_8 $ADDTLINFO_8 \n";}
if( $NAME_9 ) {print MAIL "$QUANTITY_9 \£$PRICE_9 $ID_9 - $NAME_9 $ADDTLINFO_9 \n";}
if( $NAME_10 ){print MAIL "$QUANTITY_10 \£$PRICE_10 $ID_10 - $NAME_10 $ADDTLINFO_10 \n";}
if( $NAME_11 ){print MAIL "$QUANTITY_11 \£$PRICE_11 $ID_11 - $NAME_11 $ADDTLINFO_11 \n";}
if( $NAME_12 ){print MAIL "$QUANTITY_12 \£$PRICE_12 $ID_12 - $NAME_12 $ADDTLINFO_12 \n";}
if( $NAME_13 ){print MAIL "$QUANTITY_13 \£$PRICE_13 $ID_13 - $NAME_13 $ADDTLINFO_13 \n";}
print MAIL "===================================================================== \n";
print MAIL "SUBTOTAL: $SUBTOTAL \n";
print MAIL "TOTAL: $TOTAL \n";
print MAIL "\n";
print MAIL "Payment by $b_fax \n";
print MAIL "\n\n";
print MAIL "Comments: \n";
print MAIL "--------- \n";
print MAIL "$comment \n";
print MAIL " \n";
close MAIL;
}


if( $mode eq "BOTH" || $mode eq "FILE") {

$csvcomments = $comment;
#$csvcomments =~ s/\"/$csvquote/ig;

open (CSVF,">>$csvfilename");
print CSVF "\"";
print CSVF "$months[$month] $day, $year $hour:$min:$sec";
print CSVF "\",\"";
print CSVF "$b_first";
print CSVF "\",\"";
print CSVF "$b_last";
print CSVF "\",\"";
print CSVF "$b_addr";
print CSVF "\",\"";
print CSVF "$b_addr2";
print CSVF "\",\"";
print CSVF "$b_city";
print CSVF "\",\"";
print CSVF "$b_state";
print CSVF "\",\"";
print CSVF "$b_zip";
print CSVF "\",\"";
print CSVF "$b_phone";
print CSVF "\",\"";
print CSVF "$b_email";
print CSVF "\",\"";
print CSVF "$s_first";
print CSVF "\",\"";
print CSVF "$s_last";
print CSVF "\",\"";
print CSVF "$s_addr";
print CSVF "\",\"";
print CSVF "$s_addr2";
print CSVF "\",\"";
print CSVF "$s_city";
print CSVF "\",\"";
print CSVF "$s_state";
print CSVF "\",\"";
print CSVF "$s_zip";
print CSVF "\",\"";
print CSVF "$s_phone";
print CSVF "\",\"";
print CSVF "$b_fax";
print CSVF "\",\"";
print CSVF "$QUANTITY_1";
print CSVF "\",\"";
print CSVF "\£$PRICE_1";
print CSVF "\",\"";
print CSVF "$ID_1";
print CSVF "\",\"";
print CSVF "$NAME_1";
print CSVF "\",\"";
print CSVF "$ADDTLINFO_1";
print CSVF "\",\"";
print CSVF "$QUANTITY_2";
print CSVF "\",\"";
print CSVF "\£$PRICE_2";
print CSVF "\",\"";
print CSVF "$ID_2";
print CSVF "\",\"";
print CSVF "$NAME_2";
print CSVF "\",\"";
print CSVF "$ADDTLINFO_2";
print CSVF "\",\"";
print CSVF "$QUANTITY_3";
print CSVF "\",\"";
print CSVF "\£$PRICE_3";
print CSVF "\",\"";
print CSVF "$ID_3";
print CSVF "\",\"";
print CSVF "$NAME_3";
print CSVF "\",\"";
print CSVF "$ADDTLINFO_3";
print CSVF "\",\"";
print CSVF "$QUANTITY_4";
print CSVF "\",\"";
print CSVF "\£$PRICE_4";
print CSVF "\",\"";
print CSVF "$ID_4";
print CSVF "\",\"";
print CSVF "$NAME_4";
print CSVF "\",\"";
print CSVF "$ADDTLINFO_4";
print CSVF "\",\"";
print CSVF "$QUANTITY_5";
print CSVF "\",\"";
print CSVF "\£$PRICE_5";
print CSVF "\",\"";
print CSVF "$ID_5";
print CSVF "\",\"";
print CSVF "$NAME_5";
print CSVF "\",\"";
print CSVF "$ADDTLINFO_5";
print CSVF "\",\"";
print CSVF "$QUANTITY_6";
print CSVF "\",\"";
print CSVF "\£$PRICE_6";
print CSVF "\",\"";
print CSVF "$ID_6";
print CSVF "\",\"";
print CSVF "$NAME_6";
print CSVF "\",\"";
print CSVF "$ADDTLINFO_6";
print CSVF "\",\"";
print CSVF "$QUANTITY_7";
print CSVF "\",\"";
print CSVF "\£$PRICE_7";
print CSVF "\",\"";
print CSVF "$ID_7";
print CSVF "\",\"";
print CSVF "$NAME_7";
print CSVF "\",\"";
print CSVF "$ADDTLINFO_7";
print CSVF "\",\"";
print CSVF "$QUANTITY_8";
print CSVF "\",\"";
print CSVF "\£$PRICE_8";
print CSVF "\",\"";
print CSVF "$ID_8";
print CSVF "\",\"";
print CSVF "$NAME_8";
print CSVF "\",\"";
print CSVF "$ADDTLINFO_8";
print CSVF "\",\"";
print CSVF "$QUANTITY_9";
print CSVF "\",\"";
print CSVF "\£$PRICE_9";
print CSVF "\",\"";
print CSVF "$ID_9";
print CSVF "\",\"";
print CSVF "$NAME_9";
print CSVF "\",\"";
print CSVF "$ADDTLINFO_9";
print CSVF "\",\"";
print CSVF "$QUANTITY_10";
print CSVF "\",\"";
print CSVF "\£$PRICE_10";
print CSVF "\",\"";
print CSVF "$ID_10";
print CSVF "\",\"";
print CSVF "$NAME_10";
print CSVF "\",\"";
print CSVF "$ADDTLINFO_10";
print CSVF "\",\"";
print CSVF "$QUANTITY_11";
print CSVF "\",\"";
print CSVF "\£$PRICE_11";
print CSVF "\",\"";
print CSVF "$ID_11";
print CSVF "\",\"";
print CSVF "$NAME_11";
print CSVF "\",\"";
print CSVF "$ADDTLINFO_11";
print CSVF "\",\"";
print CSVF "$QUANTITY_12";
print CSVF "\",\"";
print CSVF "\£$PRICE_12";
print CSVF "\",\"";
print CSVF "$ID_12";
print CSVF "\",\"";
print CSVF "$NAME_12";
print CSVF "\",\"";
print CSVF "$ADDTLINFO_12";
print CSVF "\",\"";
print CSVF "$QUANTITY_13";
print CSVF "\",\"";
print CSVF "\£$PRICE_13";
print CSVF "\",\"";
print CSVF "$ID_13";
print CSVF "\",\"";
print CSVF "$NAME_13";
print CSVF "\",\"";
print CSVF "$ADDTLINFO_13";
print CSVF "\",\"";
print CSVF "$SUBTOTAL";
print CSVF "\",\"";
print CSVF "$TOTAL";
print CSVF "\",\"";
print CSVF "$SHIPPING";
print CSVF "\",\"";
print CSVF "$comment";
print CSVF "\"\n";
close CSVF;
}



# Send email conformation to the customer.....
open (MAIL,"|$mailprogram");
print MAIL "To: $b_email\n";
print MAIL "From: $youremail\n";
print MAIL "Subject:Chinese Dresses Order Confirmation\n";
print MAIL "\n\n";
print MAIL "Your order from the Chinese Dresses online shop has been received. A summary of this order appears below.\n";
print MAIL "\n";
print MAIL "Order Date: $months[$month] $day, $year $hour:$min:$sec \n";
print MAIL " \n";
print MAIL "Bill To: \n";
print MAIL "-------- \n";
print MAIL " $b_first $b_last \n";
print MAIL " $b_addr \n";
print MAIL " $b_addr2 \n";
print MAIL " $b_city, $b_state $b_zip \n";
print MAIL " $b_phone \n";
#print MAIL " $b_fax \n";
print MAIL " $b_email \n";
print MAIL " \n";
print MAIL " \n";
print MAIL "Ship To: \n";
print MAIL "-------- \n";

if ( $s_addr eq "" ) {
print MAIL " Use Billing Address\n";
} else {
print MAIL " $s_first $s_last \n";
print MAIL " $s_addr \n";
print MAIL " $s_addr2 \n";
print MAIL " $s_city, $s_state $s_zip \n";
print MAIL " $s_phone \n";
}

print MAIL " \n";
print MAIL " \n";
print MAIL "Qty Price(\£) Product ID - Product Name\n";
print MAIL "===================================================================== \n";
print MAIL "$QUANTITY_1 \£$PRICE_1 $ID_1 - $NAME_1 $ADDTLINFO_1 \n";
if( $NAME_2 ) {print MAIL "$QUANTITY_2 \$£PRICE_2 $ID_2 - $NAME_2 $ADDTLINFO_2 \n";}
if( $NAME_3 ) {print MAIL "$QUANTITY_3 \$£PRICE_3 $ID_3 - $NAME_3 $ADDTLINFO_3 \n";}
if( $NAME_4 ) {print MAIL "$QUANTITY_4 \$£PRICE_4 $ID_4 - $NAME_4 $ADDTLINFO_4 \n";}
if( $NAME_5 ) {print MAIL "$QUANTITY_5 \$£PRICE_5 $ID_5 - $NAME_5 $ADDTLINFO_5 \n";}
if( $NAME_6 ) {print MAIL "$QUANTITY_6 \$£PRICE_6 $ID_6 - $NAME_6 $ADDTLINFO_6 \n";}
if( $NAME_7 ) {print MAIL "$QUANTITY_7 \$£PRICE_7 $ID_7 - $NAME_7 $ADDTLINFO_7 \n";}
if( $NAME_8 ) {print MAIL "$QUANTITY_8 \$£PRICE_8 $ID_8 - $NAME_8 $ADDTLINFO_8 \n";}
if( $NAME_9 ) {print MAIL "$QUANTITY_9 \$£PRICE_9 $ID_9 - $NAME_9 $ADDTLINFO_9 \n";}
if( $NAME_10 ){print MAIL "$QUANTITY_10 \$£PRICE_10 $ID_10 - $NAME_10 $ADDTLINFO_10 \n";}
if( $NAME_11 ){print MAIL "$QUANTITY_11 \$£PRICE_11 $ID_11 - $NAME_11 $ADDTLINFO_11 \n";}
if( $NAME_12 ){print MAIL "$QUANTITY_12 \$£PRICE_12 $ID_12 - $NAME_12 $ADDTLINFO_12 \n";}
if( $NAME_13 ){print MAIL "$QUANTITY_13 \$£PRICE_13 $ID_13 - $NAME_13 $ADDTLINFO_13 \n";}
print MAIL "===================================================================== \n";
#print MAIL "SUBTOTAL: $SUBTOTAL \n";
print MAIL "TOTAL: $TOTAL \n";
print MAIL "\n";
print MAIL "You are paying by $b_fax. Once your payment has been received your item will be dispatched. \n";
print MAIL "\n\n";
print MAIL "Comments: \n";
print MAIL "--------- \n";
print MAIL "$comment \n";
print MAIL "\n\n";
print MAIL " Thank You\n";
print MAIL "\n\n";
print MAIL "Chris & Fiona McEwan\n";
print MAIL "\n\n";
print MAIL "http://www.chinesedresses.co.uk";
close MAIL;


print "Content-type: text/html\n\n";

open (HEAD, $thank);
@LINES = <HEAD>;
close HEAD;
print @LINES;

print "<h2>Thank you</h2>";
print "Thank you for your order from Chinese Dresses. You will receive a confirmation email of your order ";
print "momentarily. Please contact us at $youremail if you have any questions or concerns.";
print "<P>";
print "<A HREF=\"$returnpage\" target=_top>Please click here to select a payment option</A>";
print "<P>";

open (FOOT, $footer);
@LINES = <FOOT>;
close FOOT;

print @LINES;

exit;
krismcewan
 
Posts: 13
Joined: Mon Aug 25, 2003 6:02 am
Location: Scotland

I seem to rememeber.....

Postby Michael » Tue Aug 26, 2003 9:47 pm

Just bought a nice fetching little red dress :lol:

Have you searched the forum on Checkout Cart() not passing variables, because that's where the problem lies.

Obviously we can see that they're in the cart, but they're not getting across to the script.

Problem I've not really gone that deep into the shopping cart side for the last year.

sorry I can't be of more help tonight

:roll:
http://www.sterling-bond.com - Escrow merchant accounts. Creating A World Of Trust.
"/" Stroke, what you do to make a woman happy.
"\" Backstroke, what you do to a woman after you've made her happy.
Michael
 
Posts: 80
Joined: Fri Aug 09, 2002 10:18 pm
Location: UK

Steven Help Please!!!

Postby ShopStylz » Wed Oct 22, 2003 8:07 am

Well Reading through the first part of this sticky, I did all the stuff you suggested and I stick url in the browser BUT, just like when I use it on the site it can't find the page????? I don't know what else to do , please reply soon and I will e-mail you my checkout.pl checkout html and nopcart.js, Please HELP ME!!! Thankyou so much Jason :cry:
ShopStylz
 
Posts: 5
Joined: Sun Oct 19, 2003 10:00 am
Location: Tulsa,Ok.

What exactly are you doing

Postby Michael » Wed Oct 22, 2003 10:15 am

Jason,

What exactly are you trying to do, where is the process coming to a halt?
Can you clarify for us all the specifics?

Michael "I've finally got it working after four days" Bond
8)
http://www.sterling-bond.com - Escrow merchant accounts. Creating A World Of Trust.
"/" Stroke, what you do to make a woman happy.
"\" Backstroke, what you do to a woman after you've made her happy.
Michael
 
Posts: 80
Joined: Fri Aug 09, 2002 10:18 pm
Location: UK

Postby inzam » Wed Nov 26, 2003 9:48 pm

First time I'm sorry my english is very poor.

My problem
- in the server doesn't work this
$mailprogram = "/usr/bin/mail";

My ISP get this info:
In Perl send mail possible whit Mail::Sender module, across mail.adatpark.hu

I'm just learning now the perl languege (and english :) ), with this please write fully instuction for checkout.pl file.

Thanks awfully!
Sándor INZÁM
Hungary
inzam
 
Posts: 1
Joined: Wed Nov 26, 2003 9:03 pm

Re: PHP Not Perl

Postby Shadow » Tue Aug 10, 2004 11:07 pm

Michael wrote:There is a PHP version of the cart that avoids the need for perl and cgi bins.

This might also solve anyone's problems with a Windows host - perl is predominant in unix/linux net servers rather than Windows servers; and although Windows hosts may support perl if you have any problems try the php version of the cart first.

8)


Ok dude, where can i get that checkout.php file?

thanks a lot!
Artur
Shadow
 
Posts: 1
Joined: Tue Aug 10, 2004 11:00 pm

New at this...

Postby gcrary » Wed Aug 25, 2004 11:47 pm

OK - I tried as you suggested and I still cannot get it to work. I am using Frontpage and IIS 5.0. The checkout.html and checkout.pl are as they are in the demo. What needs to be added, removed, or modified in order to get this to send a line to orders.csv and email both the sender and receiver? Thanks
gcrary
 
Posts: 17
Joined: Wed Jun 23, 2004 4:04 pm
Location: Washington State

what should I do to get the cheqkout.php working?

Postby woudstra » Tue Mar 08, 2005 8:31 pm

I have put some shoppingcarts on the internet now, all working fine. But lately, people working with IE6 and WindowsXP and servicepack 2 installed, can no longer order. :| Now I have to start over again. :(

I have no access to the CGI/BIN, so the Perl solution is not for me. :?

I tried the standard version of the checkout.php but that did not do anything.
I do not know anything about server settings or permissions, and I am not sure if the posts above related to Perl or PHP.

Please help: what should I do to get the cheqkout.php working? :?: :| :( :?
woudstra
 
Posts: 32
Joined: Mon Aug 02, 2004 7:14 pm

PreviousNext

Return to Help: Perl/PHP/ASP Checkout

Who is online

Users browsing this forum: No registered users and 1 guest

cron