PyukiWiki CVS Commit
pyuki****@lists*****
2012年 4月 8日 (日) 07:26:54 JST
Index: PyukiWiki-Devel/lib/captcha.inc.pl diff -u PyukiWiki-Devel/lib/captcha.inc.pl:1.5 PyukiWiki-Devel/lib/captcha.inc.pl:1.6 --- PyukiWiki-Devel/lib/captcha.inc.pl:1.5 Sun Apr 8 05:53:05 2012 +++ PyukiWiki-Devel/lib/captcha.inc.pl Sun Apr 8 07:26:54 2012 @@ -1,6 +1,6 @@ ###################################################################### # captcha.inc.pl - This is PyukiWiki, yet another Wiki clone. -# $Id: captcha.inc.pl,v 1.5 2012/04/07 20:53:05 papu Exp $ +# $Id: captcha.inc.pl,v 1.6 2012/04/07 22:26:54 papu Exp $ # # "PyukiWiki" ver 0.2.0-p3-dev3 $$ # Author: Nanami http://nanakochi.daiba.cx/ @@ -30,6 +30,25 @@ ); %captcha::parm=( + # æ¥æ¬èªæ°å # comment + ja_num=>{ + rnd_data=>[ + 'ãã¡,1','ã«,2','ãã,3','ãã,4', 'ã,5', + 'ãã,6','ãªãª,7','ã¯ã¡,8','ãã ã,9', 'ãã,0', + 'ã¤ã,1','ã«,2','ãµã³,3','ã¨ã³,4', 'ã,5', + 'ãã¯,6','ãã,7','ãã,8','ãã¥ã¦,9', 'ã¼ã,0', + ], + style=>"ime-mode: disable;", + class=>"klimit-digit", + length=>6, + size=>[24,25], + angle=>[-15,10,15], + space=>1.4, + width=>450, + height=>50, + font =>@captcha::font, + }, + # æ¥æ¬èªã²ãã㪠# comment ja=>{ rnd_data=>[ 'ã','ã¡','ã¤','ã¦','ã¨', @@ -48,10 +67,27 @@ size=>[25,28], angle=>[-10,5,10,15], space=>1.25, - width=>220, + width=>250, height=>50, font =>@captcha::font, }, + # è±èªæ°å # comment + def_num=>{ + rnd_data=>[ + 'One,1','Two,2','Three,3','Fore,4', 'Five,5', + 'Six,6','Seven,7','Eight,8','Nine,9', 'Zero,0', + ], + style=>"ime-mode: disable;", + class=>"klimit-alnum", + length=>6, + size=>[25], + angle=>[-10,-5,10,15,20], + space=>0.9, + width=>600, + height=>50, + font =>@captcha::font, + }, + # è±æ°å # comment def=>{ rnd_data=>[ 'L','M','N','O','P','Q', @@ -64,9 +100,9 @@ style=>"ime-mode: disable;", class=>"klimit-alnum", length=>6, - size=>[25,28], + size=>[28,30], angle=>[-10,5,10,15], - space=>1.25, + space=>1.3, width=>220, height=>50, font =>@captcha::font, @@ -117,12 +153,14 @@ $captcha::check=""; $captcha::id=0; %captcha::cookie; +$captcha::lang=""; ###################################################################### # Initlize # comment sub plugin_captcha_init { - $::IN_HEAD=&jscss_include("jquery"); + $::IN_HEAD.=&jscss_include("jquery"); + $captcha::lang=&getcaptcha_lang; if(&load_module("GD")) { &exec_explugin_sub("authadmin_cookie"); if($::authadmin_cookie_user_name eq $::authadmin_cookie_admin_name{admin}) { @@ -131,8 +169,10 @@ my $check=&code_convert(\$::form{captcha}, $::defaultcode); $check=Encode::decode('utf8',$check); - my($captcha_lang, $rand, $str)=&plugin_captcha_random($::form{captcha_check}); - if($str eq $check) { + my($captcha_lang, $rand, $str, $inputstr)=&plugin_captcha_random($::form{captcha_check}); + $captcha::lang=$captcha_lang; + + if($inputstr eq $check) { $captcha::check="ok"; } else { $captcha::check="ng"; @@ -155,27 +195,27 @@ my $html; $captcha::id++; - my($dmy,$dmy,$string)=plugin_captcha_random($captcha::init); - $string=Encode::encode('utf8', $string); + my($dmy,$dmy,$string, $inputstring)=plugin_captcha_random($captcha::init); + $inputstring=Encode::encode('utf8', $inputstring); my $captcha_msg; if($captcha::check eq "ok") { $captcha_msg=$::resource{captcha_plugin_ok}; } elsif($captcha::check eq "ng") { $captcha_msg=$::resource{captcha_plugin_ng}; - $string=""; + $inputstring=""; } elsif($captcha::check eq "authed") { $captcha_msg=$::resource{captcha_plugin_authed}; } elsif($captcha::check eq "error") { $captcha_msg=$::resource{captcha_plugin_error}; - $string=""; + $inputstring=""; } else { $captcha_msg=$::resource{captcha_plugin_before}; - $string=""; + $inputstring=""; } if($captcha::check=~/ok|error|authed/) { $html=<<EOM; <input type="hidden" name="captcha_check" value="$captcha::init" /> -<input type="hidden" name="captcha" value="$string" /> +<input type="hidden" name="captcha" value="$inputstring" /> $captcha_msg<br /> EOM } else { @@ -190,7 +230,8 @@ <a href="#" onclick="return reload_captcha('$::captcha_cookie','captcha@{[$captcha::id]}');"> $::resource{captcha_plugin_reload}</a>] <br /> -<input type="text" name="captcha" value="$string" /> +<input type="text" name="captcha" value="" @{[$captcha::parm{$captcha::lang}->{style} ne "" ? qq(style="$captcha::parm{$captcha::lang}->{style}") : ""]} @{[$captcha::parm{$captcha::lang}->{class} ne "" ? qq(class="$captcha::parm{$captcha::lang}->{class}") : ""]} onkeyup="this.value=this.value.toUpperCase();" maxlength="$captcha::parm{$captcha::lang}->{length}" /> +$inputstring <script type="text/javascript"><!-- setCookie("$::captcha_cookie", "$captcha::init"); //--></script> @@ -202,13 +243,18 @@ } +sub getcaptcha_lang { + my $captcha_lang=$::lang; + $captcha_lang="def" if(!defined($captcha::parm{$captcha_lang}->{rnd_data})); + return $captcha_lang; +} + sub plugin_captcha_random { my($md5str)=@_; my $test=~s/[0-9A-Fa-f]//g; my @md5; if($test eq "") { - my $captcha_lang=$::lang; - $captcha_lang="def" if(!defined($captcha::parm{$captcha_lang}->{rnd_data})); + my $captcha_lang=&getcaptcha_lang; for(my $i=0; $i<length($md5str); $i++) { $md5[$i]=hex(substr($md5str, $i*2, 2)); @@ -220,29 +266,42 @@ my $rand=int($md5[0] % $chk)+1; # æåãçæãã - my $str; + my $displaystr; + my $inputstr; my @used=(); my @rnddata=@{$captcha::parm{$captcha_lang}->{rnd_data}}; my $j=0; for(my $i=0; $i<$captcha::parm{$captcha_lang}->{length}; $i++) { my $flg=0; my $count=0; - my $char; - do { + my $displaychar; + my $inputchar; + while(1) { $j=($j+1) % $#md5; - $char=$rnddata[$md5[$j] % $#rnddata]; - $char=Encode::decode('utf8',$char); + my $char=$rnddata[$md5[$j] % $#rnddata]; + if($char=~/\,/) { + ($displaychar,$inputchar)=split(/,/,$char); + } else { + $displaychar=$char; + $inputchar=$char; + } + $displaychar=Encode::decode('utf8',$displaychar); + $inputchar=Encode::decode('utf8',$inputchar); $flg=0; foreach(@used) { - $flg=1 if($char eq $_); + $flg=1 if($inputchar eq $_); } - push(@used,$char) if($flg eq 0); $count++; - $str.=$char if($flg eq 0); - } while($flg eq 0 && $count < 100); + if($flg eq 0) { + push(@used,$inputchar); + $inputstr.=$inputchar; + $displaystr.=$displaychar; + last; + } + } # while($flg eq 0 && length($inputstr) < $captcha::parm{$captcha_lang}->{length}); } - $str=substr($str, 0, $captcha::parm{$captcha_lang}->{length}); - return($captcha_lang, $rand, $str); + $inputstr=substr($inputstr, 0, $captcha::parm{$captcha_lang}->{length}); + return($captcha_lang, $rand, $displaystr, $inputstr); } else { return ("def", 1, ""); Index: PyukiWiki-Devel/lib/wiki.cgi diff -u PyukiWiki-Devel/lib/wiki.cgi:1.761 PyukiWiki-Devel/lib/wiki.cgi:1.762 --- PyukiWiki-Devel/lib/wiki.cgi:1.761 Sun Apr 8 05:33:39 2012 +++ PyukiWiki-Devel/lib/wiki.cgi Sun Apr 8 07:26:54 2012 @@ -1,6 +1,6 @@ ###################################################################### # wiki.cgi - This is PyukiWiki, yet another Wiki clone. -# $Id: wiki.cgi,v 1.761 2012/04/07 20:33:39 papu Exp $ +# $Id: wiki.cgi,v 1.762 2012/04/07 22:26:54 papu Exp $ # # "PyukiWiki" ver 0.2.0-p3-dev3 $$ # Copyright (C) 2004-2012 Nekyo @@ -1106,10 +1106,7 @@ } } } - if($::jscss_included{$name} eq 2) { - return "<!--$name loaded-->"; - } - return $head; + return $head . " "; } =lang ja @@ -5831,7 +5828,7 @@ if($::Use_CryptPass) { if($::Token eq '') { $IN_HEAD.=&maketoken; - $::IN_HEAD.=qq(<script type="text/javascript" src="$::skin_url/passwd.js"></script>\n); + $::IN_HEAD.=&jscss_include("passwd"); } return 1; }