Thaimisc.com : หลักการเขียน Perl ให้ส่งพาสเวอร์ดให้กับสมาชิก
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 ให้ส่งพาสเวอร์ดให้กับสมาชิก
เขียนโดย Thaimisc , 19-12-2001


ได้มีคนถามผมมาทาง Misc Forum นะครับว่าต้องการจะเขียน perl เพิ่ม forgot password น่ะจะทำได้อย่างไร ยากไหม ช่วยบอกวิธีได้ไหม
ผมจึงได้คิดว่าเราน่าจะเขียนเป็น tips ออกมาเลยซะดีกว่าเพื่อคนอื่นๆ ที่ต้องการทราบจะได้ทราบและนำไปประยุกต์ใช้กันได้ด้วย ซึ่งผมบอก
ได้เต็มปากได้เลยครับ ว่าไม่ยากแน่นอนถ้าคุณได้ศึกษา และนำมาลองด้วยตนเอง


เริ่มต้นจากที่เราจะต้องมี
1. fileที่เก็บ password และ e-mail ของแต่ละ userไว้อยู่ชื่อ file user_email.txt โดยแต่ละ userจะถูกแบ่ง
username¦password¦email
โดยจะใช้ user ละ1บรรทัด ถ้าต้องการให้มีหลาย user ก็ขึ้นบรรทัดใหม่ เช่น ตัวอย่าง file user_email.txt (ตัวอักษรสีแดง)


golf¦thaimisc¦golf@thaimisc.com

choo¦thaimisc123¦choo@thaimisc.com


จาก file user.txt จะบอกได้ว่า ทั้งหมดนั้นมีอยู่ 2 user คือ username golf มี password คือ thaimisc และ e-mail คือ golf@thaimisc.com
และ username choo มี password คือ thaimisc123 และ e-mail คือ choo@thaimisc.com
2. มีหน้าไว้สำหรับ forgot password forgot.html และ file นี้ก็จะมี form ไว้ให้สำหรับกรอก usernameที่ต้องการทราบ password (ตัวอักษรสีแดง)


<FORM METHOD="POST" ACTION="/cgi-bin/forgot.pl">

username : <INPUT TYPE="TEXT" NAME="user" SIZE=20><br>

<INPUT TYPE="SUBMIT" NAME="login" VALUE="SUBMIT">

</FORM>


3. สุดท้ายต้องมี file forgot.pl ที่ทำหน้าที่เช็ค username และ password และส่ง password ไปยัง e-mail ของusername นั้นๆ


#!/usr/local/bin/perl

print "content-type:text/htmlnn";

&pasteform;


$myemail = "cgimaster@thaimisc.com"; #ใส่ e-mailของเรา

$userfile = "../user_email.txt"; #กำหนด directory ของ file user.txt

$mailprog = "/usr/lib/sendmail -t"; #กำหนด mail server ของคุณ


if ($FORM{'user'} eq "") {print "คุณกรอกข้อมูลด้วยครับ";exit;}

open (password,"$userfile");

@password1 = <password>;

close (password);


foreach $pass1 (@password1) {

chomp ($pass1);

@data1 = split(/¦/,$pass1);

$user = @data1[0];

$pass = @data1[1];

$email = @data1[2];


if ($FORM{'user'} eq $user) {

open(MAIL,"¦$mailprog");

print MAIL "To: $emailn";

print MAIL "From: $myemailn";

print MAIL "Subject: Your Passwordnn";

print MAIL "Username และ Password ของคุณคือn";

print MAIL "Username : $FORM{'user'}n";

print MAIL "Password : $passn";

close (MAIL);

print <<EOF;
ได้ส่ง รหัสผ่าน username $FORM{'user'} ไปที่ $email เรียบร้อยแล้วครับ ...

EOF

exit;

}

}

$found = "no";

if ($found eq "no") {print "ไม่มี user นี้ กรุณาตรวจสอบ user ใหม่";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 forgot.html และ user_email.txt ไปไว้ที่ /rootdir และนำ file forgot.pl ไว้ที่ /cgi-bin
นี่ล่ะครับผมหลักการของการเขียน perl แจ้ง password น่ะครับหวังว่าผู้ที่ได้เข้ามาอ่านก็จะได้ความรู้นำไปประยุกต์กันต่อได้นะคร้าบบ
สามารถเข้าไปลองโปรแกรมได้ที่ http://www.thaimisc.com/tips/forgot.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