ในการสร้างสรรค์ home page จริงๆ
เราจำเป็นต้องมี guest book
เพื่อให้ผู้เข้ามาเยี่ยมชม Website
ของเราได้แสดงความคิดเห็น
พร้อมทั้งข้อติชม
เพื่อที่ผู้พัฒนาจะได้นำไปปรับปรุงแก้ไขต่อไป
การทำงานในลักษณะ guest book
ได้นำหลักการต่างๆตั้งแต่ที่เราได้เรียนกันมาดังนี้
- ส่งค่าตัวแปร form
ข้อเสนอแนะติชม จาก html from
- รับค่าด้วย CGI perl .pl
และแปลงค่าตัวแปร
- เปิด file ข้อมูล
นำค่าตัวแปรบันทึกต่อท้ายลงใน file
ข้อมูล ปิด file ข้อมูล
- เปิด file ข้อมูล
แสดงผลข้อมูลออกทางจอภาพ ปิด file
ข้อมูล
listting ที่ 1 gbook.html
<html>
<head><title>สมุดบันทึก ข้อเสนอแนะ
ติ ชม</title></head>
<body>
<pre>
<h1>สมุดเยี่ยมชม</h1>
<form method="post" action="admsg.pl">
ชื่อ/นามสกุล: <input type="text"
name="name"><br>
ข้อความ: <input type="text"
name="masg">
<input type="submit"><input type="reset">
</form>
</pre>
</body>
</html> |
คำอธิบาย
listting ที่ 1 file gbook.html ทำหน้าที่เป็น Form
ส่งข้อมูลด้วยวิธี post ให้กับ addmsg.pl
โดยกำหนดตัวแปรไว้ ดังนี้
ชื่อ/นามสกุล เท่ากับตัวแปร name
ข้อความ
เท่ากับตัวแปร masg
เมื่อกรอกข้อความแล้วกดปุ่ม submit
ตัวแปร name และ masg จะถูกส่งไปให้ File
admasg.pl
listting ที่ 2 addmsg.pl
#!/usr/bin/perl
print "Content-type: text/html\n\n";
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;
$value =~ s/<!--(.|\n)*-->//g;
if ($allow_html != 1) {
$value =~ s/<([^>]|\n)*>//g;
}$FORM{$name} = $value;
}
open(MSG,">>msg.dat");
print MSG "<b>ข้อความ</b> :
$FORM{'masg'}<br><hr>\n";
print MSG "<b>ชื่อ/นามสกุล</b> : $FORM{'name'}
<br> \n";
close(MSG);
print "<body bgcolor='#FCF9D8'>";
print "<center><a
href=gbook.html><h3><b>คลิ๊กเพื่อลงบันทึกข้อความ</b></h3></a></center>";
print "<hr>";
open(MSG,"msg.dat");
@AllFile = <MSG>;
close(MSG);
@msgdata=(reverse( @AllFile ));
print "@msgdata"; |
คำอธิบาย
1. listting ที่ 2 file admsg.pl
จะรับค่าตัวแปร name และ masg จาก gbook.html
โดยชุด code ต่อไปนี้
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;
$value =~ s/<!--(.|\n)*-->//g;
if ($allow_html != 1) {
$value =~ s/<([^>]|\n)*>//g;
}$FORM{$name} = $value;
}
2. จากนั้นชุด code จะแปลงค่าแปร
ในรูป $FORM{'.....'}
ชุดตัวแปร $FORM{'name'} จะรับค่า $name
ชุดตัวแปร $FORM{'masg'} จะรับค่า $masg
3. เปิด file msg.dat แล้วบันทึก
ข้อความต่อไปนี้
<b>ข้อความ</b> : $FORM{'masg'}<br><hr>
<b>ชื่อ/นามสกุล</b> : $FORM{'name'} <br>
ปิด file msg.dat
4. เปิด file msg.dat
แล้วเก็บค่าลงตัวแปร @AllFile
กลับค่าตัวแปรภายใน @Allfile
จากค่าสุดท้ายมาเป็นค่าตัวแรก
ด้วยคำสั่ง reverse
@msgdata=(reverse( @Allfile ));
กลับค่าแล้วเก็บไว้ใน @msgdata
จากนั้นพิมพ์ออกหน้าจอภาพ
ดังภาพข้างล่าง
Tip ถ้าคุณใช้ Server Unix/Linux
คุณจะต้องสร้าง file msg.dat ว่างๆ
ขึ้นมาก่อน แล้ว chmod เป็น 777
ส่วนผู้ใช้ Server Windows ไม่ต้องทำครับ
ผลลัพธ์
listting ที่ 3 open_gbook.pl
ในบางครั้งผู้เข้าเยี่ยมชม
Website อาจไม่ต้องการบันทึกลง Guest Book
แต่อยากดูข้อมูลภายใน Guest Book
ก็สามารถทำได้โดย
ตัดตอนชุดคำสั่งรับค่าตัวแปรและบันทึกข้อมูลลง
file msg.dat ออก คงเหลือแต่ชุด เปิด file
เพื่อขอดูข้อมูล
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<body bgcolor='#FCF9D8'>";
print "<center><a
href=gbook.html><h3><b>คลิ๊กเพื่อลงบันทึกข้อความ</b></h3></a></center>";
print "<hr>";
open(MSG,"msg.dat");
@AllFile = <MSG>;
close(MSG);
@msgdata=(reverse( @AllFile ));
print "@msgdata"; |
ผลลัพธ์
คำอธิบาย
จะเห็นได้ว่า
ผลลัพธ์จะเหมือนกับ adgbook.pl คือ
เปิด file msg.dat
แล้วเก็บค่าลงตัวแปร @Allfile
กลับค่าตัวแปรภายใน @Allfile
จากค่าสุดท้ายมาเป็นค่าตัวแรก
ด้วยคำสั่ง reverse
@msgdata=(reverse( @Allfile ));
กลับค่าแล้วเก็บไว้ใน @msgdata
จากนั้นพิมพ์ออกหน้าจอภาพ
ดังภาพข้างต้น
Copy right Passkorn Roungrong 2000 |