Thaimisc.com : หลักการเขียน perl ให้เชค username และ password
ThaiMisc.Com : Free Webboard | Free GuestBook | Free Poll | Free Ecard Server | Free Java Chat Room | Advertising | Contact Us | Colocation | Web Hosting | เปิดร้านค้าฟรี


Category : Perl Tip's Print Article Only Print Aticle With Comment
หลักการเขียน perl ให้เชค username และ password
เขียนโดย Thaimisc , 19-12-2001
จากที่ได้มีคนส่งคำถามมาถึงผมทั้งทาง mail และ icq กันอย่างมากนะครับเรื่องการเขียน Perl ให้ไปเช็ค password ก่อนที่จะเข้าไปดูเนื้อหาข้างในต่างๆวันนี้ ผมก็ขอมาไขข้อสงสัยกันเลยแล้วกันครับว่าหลักการต่างๆ ในการเขียนมาอย่างไรซึ่งผมคิดว่าถ้าเพื่อนๆ พี่ๆน้องๆ เข้าใจหลักการแล้วนำไปประยุกต์ได้ก็ คง ไม่ยากเกินความสามารถของพวกเราหรอกครับ

เริ่มต้นจากที่เราจะต้องมี

 
1. fileที่เก็บ password ของแต่ละ userไว้อยู่ชื่อ file user.txt โดยแต่ละ user ถูกแบ่ง โดย ¦ เช่น
username¦password
โดยจะใช้ user ละ1บรรทัด ถ้าต้องการให้มีหลาย user ก็ขึ้นบรรทัดใหม่ เช่น ตัวอย่าง file user.txt (ตัวอักษรสีแดง)
golf¦thaimisc
choo¦thaimisc123
จาก file user.txt จะบอกได้ว่า ทั้งหมดนั้นมีอยู่ 2 user คือ username golf มี password คือ thaimisc และ username choo มี password คือ thaimisc123 ให้นำไฟล์ user.txt นั้นไปไว้ที่เดียวกันกับ login.pl ครับ

2. มีหน้าไว้สำหรับ login เพื่อเข้าสู่ระบบ login.html และ file นี้ก็จะมี form ไว้ให้สำหรับแต่ละ user กรอก login เข้าไป (ตัวอักษรสีแดง)

<FORM METHOD="POST" ACTION="/cgi-bin/login.pl">
username : <INPUT TYPE="TEXT" NAME="user" SIZE=20><br>
password : <INPUT TYPE="password" NAME="pass" SIZE=20><br>
<INPUT TYPE="SUBMIT" NAME="login" VALUE="SUBMIT">
</FORM>
3. สุดท้ายต้องมี file login.pl ที่ทำหน้าที่เช็ค username และ password
#!/usr/local/bin/perl
print "content-type:text/html\n\n";
&pasteform;
$userfile = "user.txt"; #กำหนด directory ของ file user.txt
if ( ($FORM{'user'} eq "") ¦¦ ($FORM{'pass'} eq "") ) {print "คุณกรอกข้อมูลด้วยครับ";exit;}
open(password, "$userfile" );
@password = <password>;
close(password);

foreach $pass1 (@password){
@data1 = split(/\¦/, $pass1);
$user = @data1[0];
$pass = @data1[1];
chomp ($pass);
if ($user eq $FORM{'user'}){

if ( ($FORM{'user'} ne $user) ¦¦ ($FORM{'pass'} ne $pass) ) {print "รหัสผ่านไม่ถูกต้อง";exit;}
$found = 1;
$login = "yes";
}
$found = 0;
}
if ($found == "0") {print "ไม่มี user นี้";exit;}
if ($login eq "yes") {
print <<EOF; #ส่วน html ที่จะแสดงเมื่อกรอก login ถูกต้อง
user $FORM{'user'}
login ถูกต้องเรียบร้อย ครับผม...
EOF
exit;
}
####################
sub pasteform {
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/~!/~!/g; $FORM{$name}=$value;
}
}
จากนั้นก็ให้upload file login.html และ user.txt ไปไว้ที่ เดียวกันกับ ไฟล์ login.pl และนำ file login.pl ไว้ที่ /cgi-bin
หลักการของ โปรแกรมเช็ค password ก็จะเป็นประมาณนี้น่ะครับ ยังไงถ้ามีข้อซักถามก็ส่งมาได้ทาง mail นะครับ golf@thaimisc.com
สามารถเข้าไปลองโปรแกรมได้ที่ http://std.act.ac.th/~golf/login.html

เขียนโดย : กอล์ฟ

 

<- Back | Next ->

ThaiMisc.Com : Free Webboard | Free GuestBook | Free Poll | Free Ecard Server | Free Java Chat Room | Advertising | Contact Us
Copyright 1999-2006 Thailand Miscellaneous. Allrights reserved. webmaster@thaimisc.com