ตัวอย่างที่ 1 การนับผู้เข้าชมโฮมเพจ
เนื่องจากโฮมเพจนี้ เป็นโฮมเพจที่เป็นแบบไม่ใช้ไฟล์
html เป็นหลัก จึงไม่ได้ใช้ counter เหมือนกันโฮมเพจอื่นๆ เขาใช้กัน
แต่ที่จะให้คุณดูก็คือ การทํางานของ counter
ในการเขียนไฟล์ counter เราจะสร้างไฟล์มา
1 ไฟล์ ผมให้ไฟล์นี้ชื่อ visitor.dat แต่เมื่อรันบน unix จึงต้องมีการแปลงไฟล์ให้เป็นแบบ
777 คือกําหนดสิทธิ์ของไฟล์ เพื่อให้สามารถเขียนข้อมูลลงไปได้
ภายในไฟล์นี้จะเก็บตัวเลขของผู้เข้าชมโฮมเพจ
ภายในไฟล์จะไม่มีอะไรนอกจากตัวเลขจํานวนนึง โดยตอนเริ่มต้น เราจะกําหนดตัวเลขนี้ให้เป็น
0 เพราะยังไม่มีผู้ใดเข้ามาเยี่ยมโฮมเพจเลย โดยจะต้องสร้างไฟล์ขึ้นมาโดยใช้คําสั่งใน
unix ดังนี้
$ cat >visitor.dat
จากนั้นพิมพ์เลข 0 ลงไปและกด Ctrl+C ไฟล์ visitor.dat จะถูกสร้างขึ้นและเก็บเลข 0 เอาไว้ จากนั้นก็ทําการเปลี่ยนโหมดของไฟล์ให้เป็น 777 โดยใช้คําสั่งต่อไปนี้
$ chmod 777 visitor.dat
คราวนี้ก็อยู่ที่ตัวโปรแกรม CGI ล่ะครับ โปรแกรม CGI จะต้องอ่านไฟล์ visitor.dat เข้ามา และเก็บไว้ที่ตัวแปรตัวหนึ่ง โดยใช้โค๊ดโปรแกรมต่อไปนี้
open( COUNT
, "visitor.dat");
$count=<COUNT>;
close(COUNT);
จํานวนตัวเลขในไฟล์ visitor.dat จะเก็บอยู่ในตัวแปร
$count ซึ่งเป็นตัวแปรแบบสเกลล่า ที่ต้องใช่ตัวแปรแบบสเกลล่าเพราะว่ามีข้อมูลในไฟล์เพียงตัวเดียว
ไม่จําเป็นต้องใช้อะเรย์
จากนั้น ทําการเพิ่มค่าตัวแปรขึ้นอีก
1 โดยใช้โค๊ดโปรแกรมดังนี้
$count++;
เมื่อเพิ่มค่าแล้ว คราวนี้ก็ทําการเขียนข้อมูลทั้งหมดลงในไฟล์
โดยเราต้องเขียนไฟล์แบบ > เพราะเราจะต้องเขียนตัวเลขใหม่ล่าสุดลงไป ดังนี้
open( COUNT
, ">visitor.dat");
print COUNT
"$count";
close( COUNT
);
คราวนี้ เวลาใครเข้ามาในโฮมเพจตัวเลขก็จะเปลี่ยนไปเรื่อย ๆ ได้
ตัวอย่างที่ 2 การเก็บอีเมล์แอดเดรส
จากในเฟรมทางด้านซ้ายจะเห็นว่า มีช่องให้คุณใส่
email เมื่อคุณกด submit เมื่อไร email จะถูกเก็บลงไปในไฟล์ email.dat ทันที
โดย email ของคุณจะถูกเพิ่มลงไปในไฟล์นี้
เรามาดูฟอร์ม html ของการใส่ email
นี้กัน
<form target='detail' method=POST action='mail/keepmail.cgi'>
recieve news and update, enter email and Submit!
<input type=text size=15 name='email'
value='[email protected]'>
<br>
<input type=submit value='submit'>
</form>
จะเห็นได้ว่าภายใน action ของฟอร์มจะชี้ไปที่ keepmail.cgi
ภายในไฟล์นี้ จะอ่านข้อมูลที่ Post มาจากฟอร์ม และเก็บลงในไฟล์ email.dat
โดยก่อนอื่น เราจะต้องสร้างไฟล์ email.dat และกําหนดโหมดของไฟล์ให้เป็น 777
เสียก่อน เพราะเราจะอนุญาติให้สามารถเพิ่มข้อมูลลงไฟล์ได้
โค๊ดโปรแกรมต่อไปนี้ จะอ่านข้อมูลจากฟอร์ม เก็บลงตัวแปร
$FORM{'email'}
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($I))/eg;
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($I))/eg;
$FORM{$name} = $value;
}
ถ้าตัวแปร $FORM{'email'} ว่างเปล่า เราจะไม่อนุญาติให้เขียนลงไฟล์ได้ โดยให้แสดงข้อความ Error ดังนี้
if ($FORM{'email'} eq "")
{
print "<h2>No email enter!!<p>Please try again</h2>";
print "<form><input type=button value='<-- go back'
onClick='history.back();'></form>";
die;
}
ถ้ามีข้อมูลในตัวแปร $FORM{'email'} จริง ให้แสดงข้อความขอบคุณ
print "<h2>Thank you
for your email</h2>";
print "<b>email : $FORM{'email'}</b><p>";
print "<form><input
type=button value='<-- go back'
onClick='history.back();'></form>";
ทําการเขียนข้อมูลลงไฟล์ email.dat ดังนี้
open(EMAILFILE , ">>email.dat");
print EMAILFILE "$FORM{'email'}\n";
close(EMAILFILE);
จากตัวอย่าง 2 ตัวอย่างนี้ คงพอจะเป็นแนวทางให้ได้เป็นอย่างดี ซอร์สโค๊ดโปรแกรม หากคุณต้องการตัวซอร์สโค๊ด สามารถดาวน์โหลดได้จาก ftp ของ DevMan โดยให้ใช้โปรแกรม ftp เข้าไปดาวน์โหลดเท่านั้น ftp://203.155.93.40/pub/devman/cgi ครับ ....