¸½ºß¼¹É®Ãæ¤Ç¤¹¡£

Yomi-Search¤ËCaptcha¤òÉÕ¤±¤ë

¤³¤³¤Ç¤ÏYomi-Search¡Ê¥è¥ß¥µ¡¼¥Á¡Ë¤ËCaptcha¤òÉÕ¤±¤ëÊýË¡¤ò¾Ò²ð¤·¤Þ¤¹¡£Captcha¤È¤Ï¡¢Æɤߤˤ¯¤¤Ê¸»ú¤òɽ¼¨¤·¤¿²èÁü¤òÅê¹Æ¼Ô¤Ë²òÆɤµ¤»¤ë¤³¤È¤Ë¤è¤ê¡¢¿Í´Ö¤¬Åê¹Æ¤¹¤ë¤³¤È¤ò³Î¤«¤á¤ëÊýË¡¤Ç¤¹¡£¾Ü¤·¤¯¤Ï¡¢Wikipedia¤Î²òÀâ¤ò¤´Í÷¤¯¤À¤µ¤¤¡£

Authen::Captcha

¤³¤³¤Ç¤Ï¡¢Authen::Captcha¤ò»ÈÍѤ¹¤ë¤³¤È¤Ë¤·¤Þ¤¹¡£¤½¤Î¤¿¤á¡¢¤Þ¤º¤ÏAuthen::Captcha¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤â¤·¥ì¥ó¥¿¥ë¥µ¡¼¥Ð¡¼¤òÍøÍѤ·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢´ÉÍý¿Í¤Ë¤ª´ê¤¤¤·¤Æ¤¯¤À¤µ¤¤¡£¤Á¤Ê¤ß¤Ë¡¢XREA¤Ê¤É¤Ç¤Ï¡¢Authen::Captcha¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

¥Ç¥£¥ì¥¯¥È¥ê¤ÎºîÀ®

¤³¤³¤«¤é¤¬ËÜÈ֤Ǥ¹¡£¤Þ¤º¡¢¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤È¡¢²èÁü¤òÊݸ¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¤·¤Þ¤¹¡£¤³¤³¤Ç¤Ï¡¢Yomi-Search¤òÀßÃÖ¤·¤¿¥Ç¥£¥ì¥¯¥È¥ê¤Ë"data"¤È"images"¤È¤¤¤¦2¤Ä¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¤·¤Æ¡¢¤½¤ì¤¾¤ì¤ò¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤È¡¢²èÁü¤òÊݸ¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤·¤Þ¤¹¡£¤³¤ì¤é¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤ÏŬÅö¤Ê¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¡Ê777¤Ê¤É¡Ë¤òÀßÄê¤Þ¤¹¡£

"$captcha->data_folder"¤ËºîÀ®¤µ¤ì¤ë¥Õ¥¡¥¤¥ë¤Ë¤Ï³°Éô¤«¤é¸«¤é¤ì¤Ê¤¤¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£Î㤨¤Ð¡¢".htaccess"¤òºîÀ®¤·¤Æ¡¢"deny from all"¤È½ñ¤¤¤Æ¤ª¤­¤Þ¤¹¡£".htaccess"¤¬»È¤¨¤Ê¤±¤ì¤Ð¡¢"$captcha->data_folder"¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î̾Á°¤òï¤âÁÛÁü¤·¤Ê¤¤¤è¤¦¤ÊÊ£»¨¤Ê¤â¤Î¤Ë¤·¤Æ¤ª¤­¤Þ¤¹¡£

"regist_ys.cgi"¤Î²þ¤

¼¡¤Ë¡¢Yomi-Search¤ò²þ¤¤·¤Þ¤¹¡£Yomi-Search¤Î¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢4.21¤È¤·¤Þ¤¹¡£

¤Þ¤º¡¢"regist_ys.cgi"¤ò¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿¤Ç³«¤¤¤Æ¡¢¤½¤ÎºÇ¸å¤Ë¼¡¤Î¤è¤¦¤Ê¥³¡¼¥É¤òÄɲä·¤Þ¤¹¡£

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
sub create_captcha_object {
    use Authen::Captcha;
    # create a new object
    my $captcha = Authen::Captcha->new();
    # set the data_folder. contains flatfile db to maintain state
    $captcha->data_folder('./data');
    # set directory to hold publicly accessable images
    $captcha->output_folder('./images');
    #$captcha->width(25);
    #$captcha->height(35);
    #$captcha->expire(300);
    
    return $captcha;
}
 
sub generate_captcha {
    $captcha = &create_captcha_object;
    
    # create a captcha. Image filename is "$md5sum.png"
    my $md5sum = $captcha->generate_code(4);
    
    return $md5sum;
}
 
sub check_captcha {
    if ($FORM{mode} eq "act_mente" || $FORM{changer} eq "admin" ||
     $FORM{'preview'} eq "on") {
        return;
    }
    
    $captcha = &create_captcha_object;
    
    # check for a valid submitted captcha
    #   $code is the submitted letter combination guess from the user
    #   $md5sum is the submitted md5sum from the user (that we gave them)
    my $results = $captcha->check_code($FORM{captcha},$FORM{captchamd5});
    # $results will be one of:
    #          1 : Passed
    #          0 : Code not checked (file error)
    #         -1 : Failed: code expired
    #         -2 : Failed: invalid code (not in database)
    #         -3 : Failed: invalid code (code does not match crypt)
    if($results == -3){
        &mes("<b>ǧ¾Ú¥³¡¼¥É</b>¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó","ǧ¾Ú¥¨¥é¡¼","back_reg");
    } elsif ($results == -1){
        &mes("<b>ǧ¾Ú¥³¡¼¥É</b>¤ÎÍ­¸ú´ü¸Â¤¬ÀÚ¤ì¤Þ¤·¤¿","ǧ¾Ú¥¨¥é¡¼","back_reg");
    } elsif ($results != 1){
        &mes("<b>ǧ¾Ú¥³¡¼¥É</b>¤Î¥Á¥§¥Ã¥¯¤Ë¼ºÇÔ¤·¤Þ¤·¤¿","ǧ¾Ú¥¨¥é¡¼","back_reg");
    }
}
 
sub get_captcha_html {
    if ($FORM{mode} eq "act_mente" || $FORM{changer} eq "admin") {
        return '';
    }
    
    my $md5sum = &generate_captcha;
    
    if (!$_[0]) {    
        return<<"<!--HTML-->";
 
    <br><li>¡Úǧ¾Ú¥³¡¼¥É¡Û
        <ul>¢¨²¼¤Î²èÁü¤Ëɽ¨¤µ¤ì¤Æ¤¤¤ëʸ»ú¡Ê¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤È¿ô»ú¡Ë
        ¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£<br>
        ¢¨¥×¥ì¥Ó¥å¡¼¤¹¤ë¾ì¹ç¤Ï¡¢¥×¥ì¥Ó¥å¡¼²èÌ̤Çǧ¾Ú¥³¡¼¥É¤òÆþÎϤ¹¤ë¤¿¤á¡¢
        ¤³¤³¤ÇÆþÎϤ¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£<br>
        ¢¨²¿¤é¤«¤ÎÍýͳ¤Ë¤è¤ê²èÁü¤òÆɤळ¤È¤¬¤Ç¤­¤Ê¤¤¾ì¹ç¤Ï¡¢¤½¤ÎÍýͳ¤òÌÀµ­¤·¤Æ¡¢
        ´ÉÍý¿Í¤Þ¤Ç¤´Ï¢Íí¤¯¤À¤µ¤¤¡£<br>
        <img src="captcha/img/$md5sum.png" alt="ǧ¾Ú¥³¡¼¥É"><br>
        <input type=text name=captcha value="$FORM{captcha}" size=30>
        <input type=hidden name=captchamd5 value="$md5sum">
        </ul><br>
<!--HTML-->
    } else {
        return<<"<!--HTML-->";
 
    <br><li>¡Úǧ¾Ú¥³¡¼¥É¡Û
        <ul>¢¨²¼¤Î²èÁü¤Ëɽ¨¤µ¤ì¤Æ¤¤¤ëʸ»ú¡Ê¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤È¿ô»ú¡Ë
        ¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£<br>
        ¢¨²¿¤é¤«¤ÎÍýͳ¤Ë¤è¤ê²èÁü¤òÆɤळ¤È¤¬¤Ç¤­¤Ê¤¤¾ì¹ç¤Ï¡¢¤½¤ÎÍýͳ¤òÌÀµ­¤·¤Æ¡¢
        ´ÉÍý¿Í¤Þ¤Ç¤´Ï¢Íí¤¯¤À¤µ¤¤¡£<br>
        <img src="captcha/img/$md5sum.png" alt="ǧ¾Ú¥³¡¼¥É"><br>
        <input type=text name=captcha value="$FORM{captcha}" size=30>
        <input type=hidden name=captchamd5 value="$md5sum">
        </ul><br>
<!--HTML-->
    }
}

¼¡¤Ë¡¢749¹ÔÌܤ¢¤¿¤ê¤Ë¤¢¤ë

  1
&check; #ÆþÎÏÆâÍƤΥÁ¥§¥Ã¥¯

¤È

  1
&lock; #¥í¥Ã¥¯

¤Î´Ö¤Ë¡¢¼¡¤Î¤è¤¦¤Ê¥³¡¼¥É¤òÁÞÆþ¤·¤Þ¤¹¡£

  1
&check_captcha;

ÀßÄê¤ÎÊѹ¹

¾åµ­¤Î¥³¡¼¥É¤Î¤¦¤Á¡¢ÀßÄê¤Ë´Ø·¸¤Î¤¢¤ëÉôʬ¤òÀâÌÀ¤·¤Þ¤¹¡£

create_captcha_object¤Î"$captcha->data_folder"¤Ë¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£¤Þ¤¿¡¢"$captcha->output_folder"¤ËºîÀ®¤µ¤ì¤ë²èÁü¤òÊݸ¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£

"$captcha->width"¤È"$captcha->height"¤Ë¤Ï¡¢°ìʸ»ú¤¢¤¿¤ê¤Î²èÁü¤Î¥µ¥¤¥º¤ò»ØÄꤷ¤Þ¤¹¡£»ØÄꤷ¤Ê¤¤¤È¡¢25¤È35¤Ë¤Ê¤ê¤Þ¤¹¡£

"$captcha->expire"¤Ë¤Ï¡¢Captcha¤ÎÍ­¸ú´ü´Ö¤òÉÃñ°Ì¤Ç»ØÄꤷ¤Þ¤¹¡£²èÁü¤¬ºîÀ®¤µ¤ì¤Æ¤«¤éÆþÎϤµ¤ì¤¿Ãͤ¬Àµ¤·¤¤¤«¥Á¥§¥Ã¥¯¤¹¤ë¤Þ¤Ç¤ÎÍ­¸ú´ü´Ö¤ò»ØÄꤹ¤ë¤â¤Î¤È»×¤ï¤ì¤Þ¤¹¡£»ØÄꤷ¤Ê¤¤¤È¡¢300¤Ë¤Ê¤ê¤Þ¤¹¡£

generate_captcha¤Ç¤Ï¡¢"$captcha->generate_code"¤Ç²èÁü¤òºîÀ®¤·¤Þ¤¹¡£¤³¤Î»þ¡¢Ê¸»ú¿ô¤ò»ØÄꤷ¤Þ¤¹¡£

"get_captcha_html"¤Ï¡¢¡Ö¿·µ¬¥Û¡¼¥à¥Ú¡¼¥¸ÅÐÏ¿¡×¥Ú¡¼¥¸¤Ëɽ¼¨¤¹¤ëCaptcha¤Ë´Ø¤¹¤ëHTML¥³¡¼¥É¤òÊÖ¤·¤Æ¤¤¤Þ¤¹¡£$_[0]¤¬0¤Î»þ¤Ï¡Ö¿·µ¬¥Û¡¼¥à¥Ú¡¼¥¸ÅÐÏ¿¡×¥Ú¡¼¥¸¤Ç¡¢$_[0]¤¬1¤Î»þ¤Ï¡Ö¿·µ¬¥Û¡¼¥à¥Ú¡¼¥¸ÅÐÏ¿(¥×¥ì¥Ó¥å¡¼²èÌÌ)¡×¥Ú¡¼¥¸¤Ç¤¹¡£¡Ö¿·µ¬¥Û¡¼¥à¥Ú¡¼¥¸ÅÐÏ¿¡×¥Ú¡¼¥¸¤«¤é¥×¥ì¥Ó¥å¡¼¤¹¤ë¾ì¹ç¤ÏCaptcha¤ò»È¤¦É¬Íפ¬¤Ê¤¤¤¿¤á¡¢¤½¤Î¤³¤È¤ò¥æ¡¼¥¶¡¼¤ËÃΤ餻¤Æ¤¤¤Þ¤¹¡Ê¤½¤¦¤Ç¤Ê¤¤¤È¡¢2²óÆþÎϤ¹¤ë¤³¤È¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¤Î¤Ç¡Ë¡£

"get_captcha_html"¤Ç¹Ô¤Ã¤Æ¤¤¤ë¤³¤È¤Ï¥Æ¥ó¥×¥ì¡¼¥È¥Õ¥¡¥¤¥ë¤Ëµ­½Ò¤·¤¿¤Û¤¦¤¬¤è¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¡¢¥³¡¼¥É¤ò¤Þ¤È¤á¤Æ¤ª¤­¤¿¤«¤Ã¤¿¤Î¤Ç¡¢¤³¤³¤Ëµ­½Ò¤·¤Þ¤·¤¿¡£

¥Æ¥ó¥×¥ì¡¼¥È¤Î²þ¤

¼¡¤Ë¥Æ¥ó¥×¥ì¡¼¥È¤òÊÔ½¸¤·¤Þ¤¹¡£ÊÔ½¸¤¹¤ë¥Æ¥ó¥×¥ì¡¼¥È¤Ï¡¢"regist_new.html"¤È"regist_new_preview.html"¤Ç¤¹¡£¥Æ¥ó¥×¥ì¡¼¥È¤Ï¡¢template¥Ç¥£¥ì¥¯¥È¥êÆâ¤Ë¤¢¤ê¤Þ¤¹¡£

¤Þ¤º"regist_new.html"¤ò¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿¤Ç³«¤¤¤Æ¡¢180¹ÔÌܤ¢¤¿¤ê¤Î

  1
  2
<!--HTML-->
}

¤Î¸å¤í¤Ë¼¡¤Î¤è¤¦¤Ê¥³¡¼¥É¤òÁÞÆþ¤·¤Þ¤¹¡£

  1
my $captcha_html = &get_captcha_html(0);

¤½¤·¤Æ¤½¤Îľ¸å¤Î

  1
print<<"<!--HTML-->";

¤Î¸å¤í¤Ë

  1
$captcha_html

¤òÁÞÆþ¤·¤Þ¤¹¡£

"regist_new_preview.html"¤Î¾ì¹ç¤âƱÍͤǤ¹¡£161¹ÔÌܤ¢¤¿¤ê¤Î

  1
  2
<!--HTML-->
}

¤Î¸å¤í¤Ë¼¡¤Î¤è¤¦¤Ê¥³¡¼¥É¤òÁÞÆþ¤·¤Þ¤¹¡£

  1
my $captcha_html = &get_captcha_html(1);

¤½¤·¤Æ¤½¤Îľ¸å¤Î

  1
print<<"<!--HTML-->";

¤Î¸å¤í¤Ë

  1
$captcha_html

¤òÁÞÆþ¤·¤Þ¤¹¡£

¤³¤ì¤Ç¡¢½ªÎ»¤Ç¤¹¡£


¥Ú¡¼¥¸¾ðÊó
  • ºîÀ®Æü : 2007-05-11 (¶â) 01:58:08
  • ºîÀ®¼Ô : DOBON!
  • ºÇ½ªÊÔ½¸Æü : 2007-05-12 (ÅÚ) 00:47:38
[ ¥È¥Ã¥× ]   [ ¿·µ¬ | »Ò¥Ú¡¼¥¸ºîÀ® | °ìÍ÷ | ñ¸ì¸¡º÷ | ºÇ½ª¹¹¿· | ¥Ø¥ë¥× ]