Thaimisc.com : Today's tips
freepollHOMEFree Chat serverFree Guest BookFree Ecard ServerFree webboard
 
 
  Article
  Html It's Easy
ICQ Status
How2Use FTP
Protect Directory
More...
  Column
  Flash Learning
Perl Scripts
ToDay's Tip
It News
  Community
  Forum
Chatroom new
  etc.
  Guest Book
links
Contact Us
Advertising
FAQ
  MiscFree
  Free Guest Book new
Free Ecard Server new
Free webboard new
Free chat Server new
Free Perl Scripts
Perl Search
Webboard
Web Directory
Protect Directory
Multi Protect new



สมัครสมาชิก เพื่อรับข่าวสารทาง e-mail

 

Today's Tip

การเขียน Perlให้เช็ค password
จากที่ได้มีคนส่งคำถามมาถึงผมทั้งทาง 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

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

 

 

Copyright 1999 Thailand Miscellaneous. Allrights reserved. webmaster@thaimisc.com