ข้อควรทราบ |
|
crtlink.pl สำหรับ ปรับปรุงหน้ารวม link ทั้งแบบ one frame และ many frame |
ประโยชน์และหน้าที่ของ crtlink.pl โปรแกรมนี้ ทำหน้าที่แยกข้อมูลจากแฟ้ม thaiall.txt มาใส่ไว้ในแฟ้ม link1.htm link2.htm link3.htm link4.htm link9.htm และยังทำหน้าที่ นำ link ทั้งหมดจาก thaiall.txt ไปใส่ไว้ในแฟ้ม link0.htm แฟ้มเดียว ทำเกิดบริการ one frame ขึ้น บริการนี้ ท่านสามารถเรียกมาใช้ได้ ด้วยตัวของท่าน ถึงแม้เป็นผู้ใช้ธรรมดาก็ตาม โดยเรียกจากคำว่า update บน frame ด้านบน ซึ่งอยู่ในแฟ้ม atop.htm เมื่อท่าน click คำว่า update จะทำให้เกิดการสั่งประมวลผลแฟ้ม crtlink.pl ซึ่งทำหน้าที่สร้างแฟ้ม link?.htm ทั้ง 6 แฟ้ม เพื่อให้ index.htm และ link.htm เรียกไปใช้เป็น frame ย่อยต่อไป |
Source code ของ crtlink.pl |
#!/usr/local/bin/perl # 1110000:www.thaiall.com:ไทยออล $i=0; $i++;$ar1[$i]="<b>การศึกษา+ราชการ</b>"; $i++;$ar1[$i]="111.มหาวิทยาลัย"; $i++;$ar1[$i]="112.วิทยาลัย"; $i++;$ar1[$i]="113.สถาบันราชภัฏ"; $i++;$ar1[$i]="114.สถาบันฯ"; $i++;$ar1[$i]="115.โรงเรียน"; $i++;$ar1[$i]="116.สอนเสริม+ติว"; $i++;$ar1[$i]="121.ราชสำนัก"; $i++;$ar1[$i]="122.กระทรวง"; $i++;$ar1[$i]="123.ทบวง-กรม"; $i++;$ar1[$i]="124.กอง"; $i++;$ar1[$i]="125.สำนักงาน"; $i++;$ar1[$i]="126.สถาบันฯ"; $i++;$ar1[$i]="127.การ"; $i++;$ar1[$i]="128.ศูนย์"; $i++;$ar1[$i]="131.สมาคม"; $i++;$ar1[$i]="132.มูลนิธิ"; $i++;$ar1[$i]="133.องค์กร+องค์การ"; $i++;$ar1[$i]="134.รวมรุ่น+เพื่อน"; $i++;$ar1[$i]="141.การเมือง"; $i++;$ar1[$i]="199.อื่นๆในกลุ่ม"; $end1=$i; $i=0; $i++;$ar2[$i]="<b>ธุรกิจ+สารพัดฟรี</b>"; $i++;$ar2[$i]="211.Pager"; $i++;$ar2[$i]="212.TV"; $i++;$ar2[$i]="213.ISP"; $i++;$ar2[$i]="214.Free.hosting"; $i++;$ar2[$i]="215.Free.mail"; $i++;$ar2[$i]="216.Free.search"; $i++;$ar2[$i]="217.Free.image"; $i++;$ar2[$i]="218.Shareware"; $i++;$ar2[$i]="219.Cartoon"; $i++;$ar2[$i]="221.สอน Online"; $i++;$ar2[$i]="222.รับ ออกแบบเว็บ"; $i++;$ar2[$i]="223.รับ วางระบบ"; $i++;$ar2[$i]="224.รับ เขียนโปรแกรม"; $i++;$ar2[$i]="225.ขาย Computer"; $i++;$ar2[$i]="226.ขาย Software"; $i++;$ar2[$i]="227.ขาย หนังสือ"; $i++;$ar2[$i]="228.ขาย CE"; $i++;$ar2[$i]="229.E-commerce"; $i++;$ar2[$i]="231.ห้างสรรพสินค้า"; $i++;$ar2[$i]="232.ร้านอาหาร"; $i++;$ar2[$i]="233.รถยนต์"; $i++;$ar2[$i]="234.โรงแรม"; $i++;$ar2[$i]="235.กีฬา"; $i++;$ar2[$i]="236.ภาพยนต์"; $i++;$ar2[$i]="237.สะสมของ"; $i++;$ar2[$i]="238.ข่าวรับสมัครงาน"; $i++;$ar2[$i]="239.การเงิน"; $i++;$ar2[$i]="241.ศาสนา"; $i++;$ar2[$i]="242.เพชร+ทอง+แร่"; $i++;$ar2[$i]="243.เพาะปลูก+เกษตร"; $i++;$ar2[$i]="244.Ceramic"; $i++;$ar2[$i]="245.Handmake"; $i++;$ar2[$i]="246.นำเข้า-ส่งออก"; $i++;$ar2[$i]="251.หนังสือพิมพ์"; $i++;$ar2[$i]="252.นิตยสาร"; $i++;$ar2[$i]="253.วิทยุ"; $i++;$ar2[$i]="261.สุขภาพ"; $i++;$ar2[$i]="271.ดูดวง"; $i++;$ar2[$i]="299.อื่นๆในกลุ่ม"; $end2=$i; $i=0; $i++;$ar3[$i]="<b>ธุรกิจระดับโลก</b>"; $i++;$ar3[$i]="311.คอมพิวเตอร์"; $i++;$ar3[$i]="312.รถยนต์"; $i++;$ar3[$i]="313.มหาวิทยาลัย"; $i++;$ar3[$i]="314.องค์กร"; $i++;$ar3[$i]="321.ภาพยนต์"; $i++;$ar3[$i]="322.ดาราชาย"; $i++;$ar3[$i]="323.ดาราหญิง"; $i++;$ar3[$i]="331.สำนักข่าว"; $i++;$ar3[$i]="399.อื่นๆในกลุ่ม"; $end3=$i; $i=0; $i++;$ar4[$i]="<b>ท่องเที่ยว+จังหวัด</b>"; $i++;$ar4[$i]="411.เว็บไทย.com"; $i++;$ar4[$i]="412.เว็บไทย.net"; $i++;$ar4[$i]="413.เว็บไทย.org"; $i++;$ar4[$i]="414.เว็บไทย.co.th"; $i++;$ar4[$i]="415.เว็บไทย.in.th"; $i++;$ar4[$i]="416.เว็บไทย.net.th"; $i++;$ar4[$i]="421.ทะเล"; $i++;$ar4[$i]="422.ภูเขา"; $i++;$ar4[$i]="431.รวมทุกจังหวัด"; $i++;$ar4[$i]="441.ภาคเหนือ"; $i++;$ar4[$i]="442.ภาคกลาง"; $i++;$ar4[$i]="443.ภาคตะวันออก"; $i++;$ar4[$i]="444.ภาคอีสาน"; $i++;$ar4[$i]="445.ภาคใต้"; $i++;$ar4[$i]="499.อื่นๆในกลุ่ม"; $end4=$i; $i=0; $i++;$ar9[$i]="<b>เพื่อนเว็บ+มาใหม่</b>"; $i++;$ar9[$i]="911.เพื่อนเว็บ"; $i++;$ar9[$i]="951.เว็บมาใหม่"; $end9=$i; $filelink = join '',"/data1/hm/thaiall.com","/link/thaiall.txt"; open(fn, "<$filelink" ); @rf = <fn>; close(fn); $size=@rf; $cntar[1]=0; $cntar[2]=0; $cntar[3]=0; $cntar[4]=0; $cntar[9]=0; for $i (0 .. $size-1) { if ( substr($rf[$i],0,1) eq "1" ) { $cntar[1]++; } if ( substr($rf[$i],0,1) eq "2" ) { $cntar[2]++; } if ( substr($rf[$i],0,1) eq "3" ) { $cntar[3]++; } if ( substr($rf[$i],0,1) eq "4" ) { $cntar[4]++; } if ( substr($rf[$i],0,1) eq "9" ) { $cntar[9]++; } } $lf = "<br>"; $ft = '<a name=bottom><hr></a></body></html>'; $topbottom= "[<a href=#top>บน</a>.<a href=#bottom>ล่าง</a>.<a href=#top target=_blank>ขยาย</a>]<br><br>\n"; print "Content-type: text/html","\n\n"; print'<html><head><title>www.thaiall.com/link/ คือรวม link ชุดเต็ม</title></head>'; print'<body><a name=top></a><font face="ms sans serif">ปรับปรุงเรียบร้อยแล้วครับ .. คราวนี้ก็ reload ได้แล้ว'; # link1.htm link2.htm link3.htm link4.htm link9.htm $lnk="1"; @ar = @ar1; $end = $end1; $hd="#ffffdd"; &crtmain; $lnk="2"; @ar = @ar2; $end = $end2; $hd="#ddffdd"; &crtmain; $lnk="3"; @ar = @ar3; $end = $end3; $hd="#ffddff"; &crtmain; $lnk="4"; @ar = @ar4; $end = $end4; $hd="#ddffff"; &crtmain; $lnk="9"; @ar = @ar9; $end = $end9; $hd="#ddddff"; &crtmain; &crtonehead; $lnk="1"; @ar = @ar1; $end = $end1; $hd="#ffffdd"; &crtone; $lnk="2"; @ar = @ar2; $end = $end2; $hd="#ddffdd"; &crtone; $lnk="3"; @ar = @ar3; $end = $end3; $hd="#ffddff"; &crtone; $lnk="4"; @ar = @ar4; $end = $end4; $hd="#ddffff"; &crtone; $lnk="9"; @ar = @ar9; $end = $end9; $hd="#ddddff"; &crtone; print fn $ft; close(fn); exit; # ============================= sub crtonehead { $file1 = join '',"/data1/hm/thaiall.com","/link/link0.htm"; if (-e $file1) { unlink "$file1"; } open (fn,">$file1"); print fn '<body bgcolor=#ffffdd><font face="ms sans serif" size=0>'; # print fn $ar1[1],' : <font color=#c0c0c0>จำนวนในกลุ่ม:_',$cntar[1],'</font><br>'; for $i (2 .. $end1) { if ( substr($ar1[$i],0,1) eq "1" ) { print fn " <a href=#",substr($ar1[$i],0,3),">",substr($ar1[$i],4,50),"</a> ";} } print fn "<br>"; print fn $ar2[1],' : <font color=#c0c0c0>จำนวนในกลุ่ม:_',$cntar[2],'</font><br>'; for $i (2 .. $end2) { if ( substr($ar2[$i],0,1) eq "2" ) { print fn " <a href=#",substr($ar2[$i],0,3),">",substr($ar2[$i],4,50),"</a> ";} } print fn "<br>"; print fn $ar3[1],' : <font color=#c0c0c0>จำนวนในกลุ่ม:_',$cntar[3],'</font><br>'; for $i (2 .. $end3) { if ( substr($ar3[$i],0,1) eq "3" ) { print fn " <a href=#",substr($ar3[$i],0,3),">",substr($ar3[$i],4,50),"</a> ";} } print fn "<br>"; print fn $ar4[1],' : <font color=#c0c0c0>จำนวนในกลุ่ม:_',$cntar[4],'</font><br>'; for $i (2 .. $end4) { if ( substr($ar4[$i],0,1) eq "4" ) { print fn " <a href=#",substr($ar4[$i],0,3),">",substr($ar4[$i],4,50),"</a> ";} } print fn "<br>"; print fn $ar9[1],' : <font color=#c0c0c0>จำนวนในกลุ่ม:_',$cntar[9],'</font><br>'; for $i (2 .. $end9) { if ( substr($ar9[$i],0,1) eq "9" ) { print fn " <a href=#",substr($ar9[$i],0,3),">",substr($ar9[$i],4,50),"</a> ";} } print fn "<br>"; } sub crtone { print fn "<hr>",$topbottom; for $i (2 .. $end) { print fn "<a name=",substr($ar[$i],0,3),"></a>"; print fn "<b>",$ar[$i],"</b><br>"; $j = 0; while ($j < $size) { if (substr($ar[$i],0,3) eq substr($rf[$j],0,3)) { @r = split /:/,$rf[$j]; print fn "<a href=i.pl?",$r[0]," target=_blank>",substr($r[2],0,length($r[2])-1),"</a> + "; } if (substr($ar[$i],0,3) < substr($rf[$j],0,3)) { $j = 9999999; } $j++; } print fn $topbottom; } } # ============================= sub crtmain { $file1 = join '',"/data1/hm/thaiall.com","/link/link",$lnk,".htm"; if (-e $file1) { unlink "$file1"; } open (fn,">$file1"); print fn '<body bgcolor=',$hd,'><font face="ms sans serif" size=0>'; print fn $ar[1],$lf,'<font color=#c0c0c0>จำนวนในกลุ่ม:_',$cntar[$lnk],'</font><br>'; for $i (2 .. $end) { if ( substr($ar[$i],0,1) eq $lnk ) { print fn " <a href=#",substr($ar[$i],0,3),">",substr($ar[$i],4,50),"</a><br>"; } } print fn "<hr>",$topbottom; for $i (2 .. $end) { if ( substr($ar[$i],0,1) eq $lnk ) { print fn "<a name=",substr($ar[$i],0,3),"></a>"; print fn "<b>",$ar[$i],"</b><br>"; $j = 0; while ($j < $size) { if ( substr($rf[$j],0,1) eq $lnk ) { if (substr($ar[$i],0,3) eq substr($rf[$j],0,3)) { @r = split /:/,$rf[$j]; print fn "<a href=i.pl?",$r[0]," target=_blank>",substr($r[2],0,length($r[2])-1),"</a><br>\n"; } if (substr($ar[$i],0,3) < substr($rf[$j],0,3)) { $j = 9999999; } } $j++; } print fn $topbottom; } } print fn $ft; close(fn); } # ============================= |
i.pl สำหรับ เรียก link ที่ต้องการตามรหัสเว็บที่เรียกไป |
ประโยชน์และหน้าที่ของ i.pl ท่านอาจสงสัยว่าทำไม ไม่ใส่ url จริง ๆ ลงไปในแฟ้ม link ทั้ง 6 ซะทีเดียว เหตุที่ไม่ใส่เข้าไปก็เพราะไม่ต้องการ ให้แฟ้ม link มีขนาดใหญ่จนเกินความจำเป็น และยังทำให้แนวคิดในการบริหารฐานข้อมูลได้ง่าย จึงได้ทำ link ให้ผ่านคำสั่ง i.pl และเหตุผลที่สำคัญอีกประการหนึ่งคือ ไม่ต้องการให้ copy ไปใช้ง่าย ๆ โดยไม่ต้องศึกษาอะไรเลย แต่ถ้าจะ copy ผมก็จะอธิบายวิธีการ copy ไปใช้ให้เข้าใจ และถ้าจะนำไปใช้จริง ๆ ก็ย่อมได้ เพราะโครงสร้าง ของแฟ้ม thaiall.txt มีลักษณะที่ง่าย เอื้อต่อการทำความเข้าใจ |
Source code ของ i.pl |
#!/usr/local/bin/perl $g = $ENV{"QUERY_STRING"}; print "Content-type: text/html","\n\n"; print'<html><head><title>ท่านมาใช้บริการ เราขอบใจ .. thaiall.com</title></head>'; $filelink = join '',"/data1/hm/thaiall.com","/link/thaiall.txt"; open(fn, "<$filelink" ); @rf = <fn>; close(fn); $size=@rf; $i = 0; $webout = "www.thaiall.com/link"; $webname = "ไม่พบเว็บที่ต้องการ"; while ($i < $size) { if (substr($rf[$i],0,7) eq $g) { @r = split /:/,$rf[$i]; $webout = $r[1]; $webname = $r[2]; $i = 9999999; } $i++; } print "<meta http-equiv='Refresh' content='0; URL=http://",$webout,"'>"; print '<body bgcolor=#fffffd><center><font face="ms sans serif" color=#0000ff>'; print 'กรุณารอสักครู่ แต่ยังเงียบอยู่นาน ให้ทำบรรทัดถัดไป<br>Click here : '; print '<a href=http://',$webout,'>',$webname,'</a>'; |
work.pl สำหรับ สืบค้นข้อมูล link เพิ่ม ลบ link ทั้งแบบผู้ใช้ และแบบผู้บริหารหน้าฐานข้อมูล |
ประโยชน์และหน้าที่ของ work.pl โปรแกรมนี้เป็นบริการที่สำคัญมากสำหรับระบบ เพราะจะทำให้ท่านสามารถ สืบค้น เพิ่ม และขอลบเว็บด้วยตัวท่านได้ แต่การเพิ่ม และลบ ถูกแบ่งเป็น 2 ส่วนคือ เพิ่มลบโดยผู้ใช้ หรือเพิ่มลบโดยผู้ดูแลระบบ การเพิ่ม จะเป็นการเพิ่ม link ใหม่ต่อท้ายแฟ้ม ส่วนการลบ จะเพิ่ม link นั้นต่อท้ายแฟ้ม แต่จะถูก mark ตัวเข้มไว้ เมื่อผู้ดูแลเข้าไปดู สามารถที่จะเพิ่มลบได้จริง โดยใช้เลขประจำเว็บในการบริหารการปรับปรุงข้อมูลนั้น โดยอาศัยการส่งค่าผ่าน form จาก atop.htm แต่สิ่งที่ระบุว่านี่คือการสั่งงานจากใคร จะตรวจสอบจากรหัสผ่าน ในที่นี้สมมุติรหัสผ่านเป็น thaiallsure แต่ในความเป็นจริง ไม่ใช่ตัวนี้ ถ้าท่าน copy ไปแล้ว จะสามารถนำไปแก้ เป็นรหัสอะไรก็ได้ที่แปลก ๆ และไม่มีโอกาสเป็นชื่อเว็บของใคร ก็จะทำให้ท่านบริหาร แฟ้ม thaiall.txt ได้ |
Source code ของ work.pl |
#!/usr/local/bin/perl $b = "/data1/hm/thaiall.com"; $basedir = join '',$b,"/link/thaiall.txt"; # pasword in space of name # 1110001 in http and linkinthai in name and worktype is del .. ok # 1110001:1120001 in http and linkinthai in name and worktype is add .. ok # move 1110001 to be 1120001 and old value will be lost $pass = "linkinthai"; &parse_form; print"Content-type:text/html\n\n"; print'<html><head><title>Work for thaiall link</title></head>',"\n"; print'<body bgcolor=#fffffd text=#000000 link=#ff0000 vlink=#ff4444 alink=#ffff00>'; print'<table width=100% cellpadding=0 cellspacing=0 border=0>'; print'<td valign=top><a href=/><img src=/pic/logota.gif border=0 alt=logo></a></td><td>'; print'<font face="ms sans serif" size=0>'; if ($http eq "www.yourcompany.com" or $name eq "ชื่อเว็บอย่างสั้น" ) { print "ท่านป้อนข้อมูลเดิมที่ผมกำหนดให้ ซึ่งไม่สามารถกระทำได้"; &bottomline; exit; } open (fn,"<$basedir"); @gfn = <fn>; close(fn); $cntar = @gfn; @lastrec = split /:/,$gfn[$cntar-1]; $lastid = $lastrec[0]; $lastid++; if ( $worktype eq "srch" ) { print "<font size=2>ผลลัพธ์จากการสืบค้น</font><br><ul>"; $j = 1; for $i (0 .. $cntar-1) { $gfn[$i] = lc $gfn[$i]; if ($gfn[$i] =~ /(.*)$name(.*)/ or $worktype eq "linkinthai") { @g = split /:/,$gfn[$i]; print "<b>$j</b> - ",$g[0]," : <a href=http://",$g[1]," target=_blank>",$g[2],"</a> "; print "<font color=#000080>",$g[1],"</font><br>"; $j++; } } print "</ul>"; } # ========================== if ( $worktype eq "add" and $pass ne $name) { unlink "$basedir"; open (fn,">$basedir"); for $i (0 .. $cntar-1) { print fn $gfn[$i]; } print fn $lastid,":",$http,":",$name,"\n"; print "เว็บใหม่จะถูกเพิ่ม เมื่อทีมงานได้เข้ามา update และจะจัดเข้ากลุ่มที่เหมาะสมต่อไป"; close (fn); } else { # start else if ( $worktype eq "add" and $pass eq $name) { @mvid = split /:/,$http; $mvhaveid = $mvid[0]; $mvnewid = $mvid[1]; if ( $mvhaveid > 9999999 or $mvnewid > 9999999 or $mvhaveid < 1000000 or $mvnewid < 1000000 ) { print "รหัสเก่า : ", $mvhaveid ,"<br>"; print "รหัสใหม่ : ", $mvnewid ,"<br>"; print "รหัสขอย้าย link มีปัญหาคือ ป้อนไว้ ไม่เท่า 7 หลัก"; &bottomline; exit; } $yeshave = "no"; $ok = "no"; for $i (0 .. $cntar-1) { @mvdat = split /:/,$gfn[$i]; if ($mvdat[0] eq $mvhaveid) { $yeshave = "ok"; $yesdata = join '',$mvdat[0],':',$mvdat[1],':',$mvdat[2]; } } if ($yeshave eq "ok" ) { unlink "$basedir"; open (fn,">$basedir"); for $i (0 .. $cntar-1) { @mvdat = split /:/,$gfn[$i]; if (($mvdat[0] eq $mvnewid and $ok ne "ok") or ($mvdat[0] > $mvnewid and $ok ne "ok")) { @yesrec = split /:/,$yesdata; print fn $mvnewid,":",$yesrec[1],":",$yesrec[2]; $ok = "ok"; print "ย้ายรหัสข้อมูลเก่าลงไปเรียบร้อย ด้วยดี"; } if ($mvdat[0] ne $mvhaveid and $mvdat[0] ne $mvnewid ) { print fn $gfn[$i]; } } # for if ($mvdat[0] < $mvnewid and $ok eq "no") { @yesrec = split /:/,$yesdata; print fn $mvnewid,":",$yesrec[1],":",$yesrec[2]; $ok = "ok"; print "ย้ายรหัสข้อมูลเก่าลงไปเรียบร้อย ด้วยดี"; } if ($ok eq "no") { print "การย้ายข้อมูลไม่สำเร็จ"; } close (fn); } else { print "ไม่พบรหัสที่ต้องการให้ย้ายไป จึงย้ายไม่สำเร็จ"; } } # end else } # ========================== if ( $worktype eq "del" ) { unlink "$basedir"; open (fn,">$basedir"); for $i (0 .. $cntar-1) { @g = split /:/,$gfn[$i]; if ($pass ne $name or $http ne $g[0]) { print fn $gfn[$i]; } } if ($pass eq $name) { print "เลขที่ต้องการลบ จัดการเรียบร้อย"; } else { print fn $lastid,":",$http,":<b>",$name,"</b>\n"; print "เว็บที่ขอลบ จะถูกบันทึกเป็นตัวเข้ม ใน frame ด้านขวา .. และผมขอตรวจสอบก่อน"; } close (fn); } &bottomline; sub bottomline { print '<!--#exec cgi="/cgi/sponsor.pl"--><!--#exec cgi="/cgi/bottom.pl"--></td></table>'; exit; } sub parse_form { 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) { local($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/<!--(.|\n)*-->//g; $config{$name} = $value; } $worktype = lc $config{'chk'}; $http = lc $config{'http'}; $name = lc $config{'name'}; if (substr($http,0,7) eq "http://") { $http = lc substr($http,7,length($http)-7); } } |
แบบฝึกหัด |
|