update plugin/kcaptcha
This commit is contained in:
parent
c33663d056
commit
73ef7de539
9 changed files with 295 additions and 270 deletions
|
|
@ -1,3 +1,2 @@
|
|||
<?php
|
||||
include_once('../../common.php');
|
||||
?>
|
||||
<?php
|
||||
include_once('../../common.php');
|
||||
|
|
@ -1,3 +1,2 @@
|
|||
<?php
|
||||
require(dirname(__FILE__).'/kcaptcha.lib.php');
|
||||
?>
|
||||
<?php
|
||||
require(dirname(__FILE__).'/kcaptcha.lib.php');
|
||||
|
|
@ -1,107 +1,107 @@
|
|||
$(function(){
|
||||
var mp3_url = "";
|
||||
|
||||
$(document).on( "click", "#captcha_reload", function(){
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: g5_captcha_url+'/kcaptcha_session.php',
|
||||
cache: false,
|
||||
async: false,
|
||||
success: function(text) {
|
||||
$('#captcha_img').attr('src', g5_captcha_url+'/kcaptcha_image.php?t=' + (new Date).getTime());
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: g5_captcha_url+'/kcaptcha_mp3.php',
|
||||
cache: false,
|
||||
async: false,
|
||||
success: function(url) {
|
||||
if (url) {
|
||||
mp3_url = url + "?t="+new Date().getTime();
|
||||
$("#captcha_audio").attr("src", mp3_url);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on( "click", "#captcha_mp3", function(){
|
||||
$("body").css("cursor", "wait");
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: g5_captcha_url+'/kcaptcha_mp3.php',
|
||||
cache: false,
|
||||
async: false,
|
||||
success: function(url) {
|
||||
if (url) {
|
||||
mp3_url = url + "?t="+new Date().getTime();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var html5use = false;
|
||||
var html5audio = document.createElement("audio");
|
||||
if (html5audio.canPlayType && html5audio.canPlayType("audio/mpeg")) {
|
||||
var wav = new Audio(mp3_url);
|
||||
wav.id = "mp3_audio";
|
||||
wav.autoplay = true;
|
||||
wav.controls = false;
|
||||
wav.autobuffer = false;
|
||||
wav.loop = false;
|
||||
|
||||
if ($("#mp3_audio").length) $("#mp3_audio").remove();
|
||||
$("#captcha_mp3").after(wav);
|
||||
|
||||
html5use = true;
|
||||
}
|
||||
|
||||
if (!html5use) {
|
||||
var object = '<object id="mp3_object" classid="clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95" height="0" width="0" style="width:0; height:0;">';
|
||||
object += '<param name="AutoStart" value="1" />';
|
||||
object += '<param name="Volume" value="0" />';
|
||||
object += '<param name="PlayCount" value="1" />';
|
||||
object += '<param name="FileName" value="' + mp3_url + '" />';
|
||||
object += '<embed id="mp3_embed" src="' + mp3_url + '" autoplay="true" hidden="true" volume="100" type="audio/x-wav" style="display:inline;" />';
|
||||
object += '</object>';
|
||||
if ($("#mp3_object").length)
|
||||
$("#mp3_object").remove();
|
||||
$("#captcha_mp3").after(object);
|
||||
}
|
||||
|
||||
$("body").css("cursor", "default");
|
||||
return false;
|
||||
|
||||
}).css('cursor', 'pointer');
|
||||
|
||||
$("#captcha_reload").trigger("click");
|
||||
});
|
||||
|
||||
// 출력된 캡챠이미지의 키값과 입력한 키값이 같은지 비교한다.
|
||||
function chk_captcha()
|
||||
{
|
||||
var captcha_result = false;
|
||||
var captcha_key = document.getElementById('captcha_key');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: g5_captcha_url+'/kcaptcha_result.php',
|
||||
data: {
|
||||
'captcha_key': captcha_key.value
|
||||
},
|
||||
cache: false,
|
||||
async: false,
|
||||
success: function(text) {
|
||||
captcha_result = text;
|
||||
}
|
||||
});
|
||||
|
||||
if (!captcha_result) {
|
||||
alert('자동등록방지 입력 글자가 틀렸거나 입력 횟수가 넘었습니다.\n\n새로고침을 클릭하여 다시 입력해 주십시오.');
|
||||
captcha_key.select();
|
||||
captcha_key.focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
$(function(){
|
||||
var mp3_url = "";
|
||||
|
||||
$(document).on( "click", "#captcha_reload", function(){
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: g5_captcha_url+'/kcaptcha_session.php',
|
||||
cache: false,
|
||||
async: false,
|
||||
success: function(text) {
|
||||
$('#captcha_img').attr('src', g5_captcha_url+'/kcaptcha_image.php?t=' + (new Date).getTime());
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: g5_captcha_url+'/kcaptcha_mp3.php',
|
||||
cache: false,
|
||||
async: false,
|
||||
success: function(url) {
|
||||
if (url) {
|
||||
mp3_url = url + "?t="+new Date().getTime();
|
||||
$("#captcha_audio").attr("src", mp3_url);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on( "click", "#captcha_mp3", function(){
|
||||
$("body").css("cursor", "wait");
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: g5_captcha_url+'/kcaptcha_mp3.php',
|
||||
cache: false,
|
||||
async: false,
|
||||
success: function(url) {
|
||||
if (url) {
|
||||
mp3_url = url + "?t="+new Date().getTime();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var html5use = false;
|
||||
var html5audio = document.createElement("audio");
|
||||
if (html5audio.canPlayType && html5audio.canPlayType("audio/mpeg")) {
|
||||
var wav = new Audio(mp3_url);
|
||||
wav.id = "mp3_audio";
|
||||
wav.autoplay = true;
|
||||
wav.controls = false;
|
||||
wav.autobuffer = false;
|
||||
wav.loop = false;
|
||||
|
||||
if ($("#mp3_audio").length) $("#mp3_audio").remove();
|
||||
$("#captcha_mp3").after(wav);
|
||||
|
||||
html5use = true;
|
||||
}
|
||||
|
||||
if (!html5use) {
|
||||
var object = '<object id="mp3_object" classid="clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95" height="0" width="0" style="width:0; height:0;">';
|
||||
object += '<param name="AutoStart" value="1" />';
|
||||
object += '<param name="Volume" value="0" />';
|
||||
object += '<param name="PlayCount" value="1" />';
|
||||
object += '<param name="FileName" value="' + mp3_url + '" />';
|
||||
object += '<embed id="mp3_embed" src="' + mp3_url + '" autoplay="true" hidden="true" volume="100" type="audio/x-wav" style="display:inline;" />';
|
||||
object += '</object>';
|
||||
if ($("#mp3_object").length)
|
||||
$("#mp3_object").remove();
|
||||
$("#captcha_mp3").after(object);
|
||||
}
|
||||
|
||||
$("body").css("cursor", "default");
|
||||
return false;
|
||||
|
||||
}).css('cursor', 'pointer');
|
||||
|
||||
$("#captcha_reload").trigger("click");
|
||||
});
|
||||
|
||||
// 출력된 캡챠이미지의 키값과 입력한 키값이 같은지 비교한다.
|
||||
function chk_captcha()
|
||||
{
|
||||
var captcha_result = false;
|
||||
var captcha_key = document.getElementById('captcha_key');
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: g5_captcha_url+'/kcaptcha_result.php',
|
||||
data: {
|
||||
'captcha_key': captcha_key.value
|
||||
},
|
||||
cache: false,
|
||||
async: false,
|
||||
success: function(text) {
|
||||
captcha_result = text;
|
||||
}
|
||||
});
|
||||
|
||||
if (!captcha_result) {
|
||||
alert('자동등록방지 입력 글자가 틀렸거나 입력 횟수가 넘었습니다.\n\n새로고침을 클릭하여 다시 입력해 주십시오.');
|
||||
captcha_key.select();
|
||||
captcha_key.focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -18,6 +18,8 @@
|
|||
|
||||
class KCAPTCHA{
|
||||
|
||||
private $keystring;
|
||||
|
||||
// generates keystring and image
|
||||
function image(){
|
||||
require(dirname(__FILE__).'/kcaptcha_config.php');
|
||||
|
|
@ -50,13 +52,13 @@ class KCAPTCHA{
|
|||
$transparent = (imagecolorat($font, $i, 0) >> 24) == 127;
|
||||
|
||||
if(!$reading_symbol && !$transparent){
|
||||
$font_metrics[$alphabet{$symbol}]=array('start'=>$i);
|
||||
$font_metrics[$alphabet[$symbol]]=array('start'=>$i);
|
||||
$reading_symbol=true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if($reading_symbol && $transparent){
|
||||
$font_metrics[$alphabet{$symbol}]['end']=$i;
|
||||
$font_metrics[$alphabet[$symbol]]['end']=$i;
|
||||
$reading_symbol=false;
|
||||
$symbol++;
|
||||
continue;
|
||||
|
|
@ -75,7 +77,9 @@ class KCAPTCHA{
|
|||
$odd=mt_rand(0,1);
|
||||
if($odd==0) $odd=-1;
|
||||
for($i=0;$i<$length;$i++){
|
||||
$m=$font_metrics[$this->keystring{$i}];
|
||||
|
||||
if( ! isset($this->keystring[$i]) ) continue;
|
||||
$m=$font_metrics[$this->keystring[$i]];
|
||||
|
||||
$y=(($i%2)*$fluctuation_amplitude - $fluctuation_amplitude/2)*$odd
|
||||
+ mt_rand(-round($fluctuation_amplitude/3), round($fluctuation_amplitude/3))
|
||||
|
|
@ -169,10 +173,10 @@ class KCAPTCHA{
|
|||
if($sx<0 || $sy<0 || $sx>=$width-1 || $sy>=$height-1){
|
||||
continue;
|
||||
}else{
|
||||
$color=imagecolorat($img, $sx, $sy) & 0xFF;
|
||||
$color_x=imagecolorat($img, $sx+1, $sy) & 0xFF;
|
||||
$color_y=imagecolorat($img, $sx, $sy+1) & 0xFF;
|
||||
$color_xy=imagecolorat($img, $sx+1, $sy+1) & 0xFF;
|
||||
$color=imagecolorat($img, (int)$sx, (int)$sy) & 0xFF;
|
||||
$color_x=imagecolorat($img, (int)$sx+1, (int)$sy) & 0xFF;
|
||||
$color_y=imagecolorat($img, (int)$sx, (int)$sy+1) & 0xFF;
|
||||
$color_xy=imagecolorat($img, (int)$sx+1, (int)$sy+1) & 0xFF;
|
||||
}
|
||||
|
||||
if($color==255 && $color_x==255 && $color_y==255 && $color_xy==255){
|
||||
|
|
@ -202,7 +206,7 @@ class KCAPTCHA{
|
|||
$newblue=$newcolor0*$foreground_color[2]+$newcolor*$background_color[2];
|
||||
}
|
||||
|
||||
imagesetpixel($img2, $x, $y, imagecolorallocate($img2, $newred, $newgreen, $newblue));
|
||||
imagesetpixel($img2, (int)$x, (int)$y, imagecolorallocate($img2, (int)$newred, (int)$newgreen, (int)$newblue));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -240,17 +244,17 @@ function captcha_html($class="captcha")
|
|||
if(is_mobile())
|
||||
$class .= ' m_captcha';
|
||||
|
||||
$html .= "\n".'<script>var g5_captcha_url = "'.G5_CAPTCHA_URL.'";</script>';
|
||||
$html = "\n".'<script>var g5_captcha_url = "'.G5_CAPTCHA_URL.'";</script>';
|
||||
//$html .= "\n".'<script>var g5_captcha_path = "'.G5_CAPTCHA_PATH.'";</script>';
|
||||
$html .= "\n".'<script src="'.G5_CAPTCHA_URL.'/kcaptcha.js"></script>';
|
||||
$html .= "\n".'<fieldset id="captcha" class="'.$class.'">';
|
||||
$html .= "\n".'<legend><label for="captcha_key">자동등록방지</label></legend>';
|
||||
if (is_mobile()) $html .= '<audio src="#" id="captcha_audio" controls></audio>';
|
||||
if (is_mobile()) $html .= '<audio id="captcha_audio" controls></audio>';
|
||||
//$html .= "\n".'<img src="#" alt="" id="captcha_img">';
|
||||
$html .= "\n".'<img src="javascript:void(0);" alt="" id="captcha_img">';
|
||||
$html .= "\n".'<img src="'.G5_CAPTCHA_URL.'/img/dot.gif" alt="" id="captcha_img">';
|
||||
$html .= '<input type="text" name="captcha_key" id="captcha_key" required class="captcha_box required" size="6" maxlength="6">';
|
||||
if (!is_mobile()) $html .= "\n".'<button type="button" id="captcha_mp3"><span></span>숫자음성듣기</button>';
|
||||
$html .= "\n".'<button type="button" id="captcha_reload"><span></span>새로고침</button>';
|
||||
$html .= '<input type="text" name="captcha_key" id="captcha_key" required class="captcha_box required" size="6" maxlength="6">';
|
||||
$html .= "\n".'<span id="captcha_info">자동등록방지 숫자를 순서대로 입력하세요.</span>';
|
||||
$html .= "\n".'</fieldset>';
|
||||
return $html;
|
||||
|
|
@ -260,26 +264,29 @@ function captcha_html($class="captcha")
|
|||
// 캡챠 사용시 자바스크립트에서 입력된 캡챠를 검사함
|
||||
function chk_captcha_js()
|
||||
{
|
||||
// return "if (!chk_captcha()) return false;\n";
|
||||
|
||||
return "if (!chk_captcha()) return false;\n";
|
||||
}
|
||||
|
||||
|
||||
// 세션에 저장된 캡챠값과 $_POST 로 넘어온 캡챠값을 비교
|
||||
function chk_captcha()
|
||||
{
|
||||
/*$captcha_count = (int)get_session('ss_captcha_count');
|
||||
$captcha_count = (int)get_session('ss_captcha_count');
|
||||
if ($captcha_count > 5) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!isset($_POST['captcha_key'])) return false;
|
||||
if (!trim($_POST['captcha_key'])) return false;
|
||||
if ($_POST['captcha_key'] != get_session('ss_captcha_key')) {
|
||||
$post_captcha_key = (isset($_POST['captcha_key']) && $_POST['captcha_key']) ? trim($_POST['captcha_key']) : '';
|
||||
if (!trim($post_captcha_key)) return false;
|
||||
|
||||
if( $post_captcha_key && function_exists('get_string_encrypt') ){
|
||||
$ip = md5(sha1($_SERVER['REMOTE_ADDR']));
|
||||
$post_captcha_key = get_string_encrypt($ip.$post_captcha_key);
|
||||
}
|
||||
|
||||
if ($post_captcha_key != get_session('ss_captcha_key')) {
|
||||
$_SESSION['ss_captcha_count'] = $captcha_count + 1;
|
||||
return false;
|
||||
}
|
||||
return true;*/
|
||||
return true;
|
||||
}
|
||||
?>
|
||||
return true;
|
||||
}
|
||||
|
|
@ -1,52 +1,51 @@
|
|||
<?php
|
||||
|
||||
# KCAPTCHA configuration file
|
||||
|
||||
$alphabet = "0123456789abcdefghijklmnopqrstuvwxyz"; # do not change without changing font files!
|
||||
|
||||
# symbols used to draw CAPTCHA
|
||||
$allowed_symbols = "0123456789"; #digits
|
||||
//$allowed_symbols = "0123456789abcdef"; #digits // 스캔 방지를 위하여 abcdef 추가 151029 15:00
|
||||
//$allowed_symbols = "abcdeghkmnpqsuvxyz"; #digits
|
||||
//$allowed_symbols = "23456789abcdeghkmnpqsuvxyz"; #alphabet without similar symbols (o=0, 1=l, i=j, t=f)
|
||||
|
||||
# folder with fonts
|
||||
$fontsdir = 'fonts';
|
||||
|
||||
# CAPTCHA string length
|
||||
//$length = mt_rand(5,6); # random 5 or 6
|
||||
$length = 6;
|
||||
|
||||
# CAPTCHA image size (you do not need to change it, whis parameters is optimal)
|
||||
$width = 160;
|
||||
$height = 60;
|
||||
|
||||
# symbol's vertical fluctuation amplitude divided by 2
|
||||
//$fluctuation_amplitude = 5;
|
||||
//$fluctuation_amplitude = 11; // 파동&진폭 151028 14:00
|
||||
$fluctuation_amplitude = 5; // 파동&진폭 원래대로 151029 15:00
|
||||
|
||||
#noise
|
||||
//$white_noise_density=0; // no white noise
|
||||
$white_noise_density=1/6;
|
||||
//$black_noise_density=0; // no black noise
|
||||
$black_noise_density=1/20;
|
||||
|
||||
# increase safety by prevention of spaces between symbols
|
||||
$no_spaces = false;
|
||||
|
||||
# show credits
|
||||
$show_credits = false; # set to false to remove credits line. Credits adds 12 pixels to image height
|
||||
$credits = 'www.captcha.ru'; # if empty, HTTP_HOST will be shown
|
||||
|
||||
# CAPTCHA image colors (RGB, 0-255)
|
||||
$foreground_color = array(0, 0, 0);
|
||||
$background_color = array(255, 255, 255);
|
||||
//$foreground_color = array(mt_rand(0,100), mt_rand(0,100), mt_rand(0,100));
|
||||
//$background_color = array(mt_rand(200,255), mt_rand(200,255), mt_rand(200,255));
|
||||
|
||||
# JPEG quality of CAPTCHA image (bigger is better quality, but larger file size)
|
||||
$jpeg_quality = 90;
|
||||
|
||||
$wave = true;
|
||||
?>
|
||||
<?php
|
||||
|
||||
# KCAPTCHA configuration file
|
||||
|
||||
$alphabet = "0123456789abcdefghijklmnopqrstuvwxyz"; # do not change without changing font files!
|
||||
|
||||
# symbols used to draw CAPTCHA
|
||||
$allowed_symbols = "0123456789"; #digits
|
||||
//$allowed_symbols = "0123456789abcdef"; #digits // 스캔 방지를 위하여 abcdef 추가 151029 15:00
|
||||
//$allowed_symbols = "abcdeghkmnpqsuvxyz"; #digits
|
||||
//$allowed_symbols = "23456789abcdeghkmnpqsuvxyz"; #alphabet without similar symbols (o=0, 1=l, i=j, t=f)
|
||||
|
||||
# folder with fonts
|
||||
$fontsdir = 'fonts';
|
||||
|
||||
# CAPTCHA string length
|
||||
//$length = mt_rand(5,6); # random 5 or 6
|
||||
$length = 6;
|
||||
|
||||
# CAPTCHA image size (you do not need to change it, whis parameters is optimal)
|
||||
$width = 160;
|
||||
$height = 60;
|
||||
|
||||
# symbol's vertical fluctuation amplitude divided by 2
|
||||
//$fluctuation_amplitude = 5;
|
||||
//$fluctuation_amplitude = 11; // 파동&진폭 151028 14:00
|
||||
$fluctuation_amplitude = 5; // 파동&진폭 원래대로 151029 15:00
|
||||
|
||||
#noise
|
||||
//$white_noise_density=0; // no white noise
|
||||
$white_noise_density=1/6;
|
||||
//$black_noise_density=0; // no black noise
|
||||
$black_noise_density=1/20;
|
||||
|
||||
# increase safety by prevention of spaces between symbols
|
||||
$no_spaces = false;
|
||||
|
||||
# show credits
|
||||
$show_credits = false; # set to false to remove credits line. Credits adds 12 pixels to image height
|
||||
$credits = 'www.captcha.ru'; # if empty, HTTP_HOST will be shown
|
||||
|
||||
# CAPTCHA image colors (RGB, 0-255)
|
||||
$foreground_color = array(0, 0, 0);
|
||||
$background_color = array(255, 255, 255);
|
||||
//$foreground_color = array(mt_rand(0,100), mt_rand(0,100), mt_rand(0,100));
|
||||
//$background_color = array(mt_rand(200,255), mt_rand(200,255), mt_rand(200,255));
|
||||
|
||||
# JPEG quality of CAPTCHA image (bigger is better quality, but larger file size)
|
||||
$jpeg_quality = 90;
|
||||
|
||||
$wave = true;
|
||||
|
|
@ -1,9 +1,16 @@
|
|||
<?php
|
||||
include_once("_common.php");
|
||||
include_once('captcha.lib.php');
|
||||
|
||||
$captcha = new KCAPTCHA();
|
||||
$captcha->setKeyString(get_session("ss_captcha_key"));
|
||||
$captcha->getKeyString();
|
||||
$captcha->image();
|
||||
?>
|
||||
<?php
|
||||
include_once("_common.php");
|
||||
include_once('captcha.lib.php');
|
||||
|
||||
$captcha = new KCAPTCHA();
|
||||
$ss_captcha_key = get_session("ss_captcha_key");
|
||||
$ss_captcha_key_decrypt = '';
|
||||
if( $ss_captcha_key && !preg_match('/^[0-9]/', $ss_captcha_key) && function_exists('get_string_decrypt') ){
|
||||
$ip = md5(sha1($_SERVER['REMOTE_ADDR']));
|
||||
$ss_captcha_key_decrypt = str_replace($ip, '', get_string_decrypt($ss_captcha_key));
|
||||
}
|
||||
# php 5.2 또는 5.3 버전에서 포인터처럼 해당 세션값이 변경되는 버그가 있어서 아래와 같이 조치함
|
||||
if(! $ss_captcha_key_decrypt) $ss_captcha_key_decrypt = $ss_captcha_key;
|
||||
$captcha->setKeyString($ss_captcha_key_decrypt);
|
||||
$captcha->getKeyString();
|
||||
$captcha->image();
|
||||
|
|
@ -1,44 +1,49 @@
|
|||
<?php
|
||||
include_once("_common.php");
|
||||
|
||||
function make_mp3()
|
||||
{
|
||||
global $config;
|
||||
|
||||
$number = get_session("ss_captcha_key");
|
||||
|
||||
if ($number == "") return;
|
||||
if ($number == get_session("ss_captcha_save")) return;
|
||||
|
||||
$mp3s = array();
|
||||
for($i=0;$i<strlen($number);$i++){
|
||||
$file = G5_CAPTCHA_PATH.'/mp3/'.$config['cf_captcha_mp3'].'/'.$number[$i].'.mp3';
|
||||
$mp3s[] = $file;
|
||||
}
|
||||
|
||||
$ip = sprintf("%u", ip2long($_SERVER['REMOTE_ADDR']));
|
||||
$mp3_file = 'data/cache/kcaptcha-'.$ip.'_'.G5_SERVER_TIME.'.mp3';
|
||||
|
||||
$contents = '';
|
||||
foreach ($mp3s as $mp3) {
|
||||
$contents .= file_get_contents($mp3);
|
||||
}
|
||||
|
||||
file_put_contents(G5_PATH.'/'.$mp3_file, $contents);
|
||||
|
||||
// 지난 캡챠 파일 삭제
|
||||
if (rand(0,99) == 0) {
|
||||
foreach (glob(G5_PATH.'/data/cache/kcaptcha-*.mp3') as $file) {
|
||||
if (filemtime($file) + 86400 < G5_SERVER_TIME) {
|
||||
@unlink($file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
set_session("ss_captcha_save", $number);
|
||||
|
||||
return G5_URL.'/'.$mp3_file;
|
||||
}
|
||||
|
||||
echo make_mp3();
|
||||
?>
|
||||
<?php
|
||||
include_once("_common.php");
|
||||
|
||||
function make_mp3()
|
||||
{
|
||||
global $config;
|
||||
|
||||
$number = get_session("ss_captcha_key");
|
||||
|
||||
if ($number == "") return;
|
||||
$ip = md5(sha1($_SERVER['REMOTE_ADDR']));
|
||||
if( $number && function_exists('get_string_decrypt') ){
|
||||
$number = str_replace($ip, '', get_string_decrypt($number));
|
||||
}
|
||||
if ($number == get_session("ss_captcha_save")) return;
|
||||
|
||||
$mp3s = array();
|
||||
for($i=0;$i<strlen($number);$i++){
|
||||
$file = G5_CAPTCHA_PATH.'/mp3/'.$config['cf_captcha_mp3'].'/'.$number[$i].'.mp3';
|
||||
$mp3s[] = $file;
|
||||
}
|
||||
|
||||
$mp3_file = 'cache/kcaptcha-'.$ip.'_'.G5_SERVER_TIME.'.mp3';
|
||||
|
||||
$contents = '';
|
||||
foreach ($mp3s as $mp3) {
|
||||
$contents .= file_get_contents($mp3);
|
||||
}
|
||||
|
||||
file_put_contents(G5_DATA_PATH.'/'.$mp3_file, $contents);
|
||||
|
||||
// 지난 캡챠 파일 삭제
|
||||
if (rand(0,99) == 0) {
|
||||
foreach (glob(G5_DATA_PATH.'/cache/kcaptcha-*.mp3') as $file) {
|
||||
if (filemtime($file) + 86400 < G5_SERVER_TIME) {
|
||||
@unlink($file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( $number && function_exists('get_string_encrypt') ){
|
||||
$number = get_string_encrypt($ip.$number);
|
||||
}
|
||||
set_session("ss_captcha_save", $number);
|
||||
|
||||
return G5_DATA_URL.'/'.$mp3_file;
|
||||
}
|
||||
|
||||
echo make_mp3();
|
||||
|
|
@ -1,13 +1,18 @@
|
|||
<?
|
||||
// 캡챠 세션값과 비교하여 맞는지? 틀린지? 결과값을 출력합니다.
|
||||
include_once("_common.php");
|
||||
//header("Content-Type: text/html; charset=$g4[charset]");
|
||||
|
||||
$count = (int)get_session("ss_captcha_count");
|
||||
if ($count >= 5) { // 설정값 이상이면 자동등록방지 입력 문자가 맞아도 오류 처리
|
||||
echo false;
|
||||
} else {
|
||||
set_session("ss_captcha_count", $count + 1);
|
||||
echo (get_session("ss_captcha_key") == $_POST['captcha_key']) ? true : false;
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
// 캡챠 세션값과 비교하여 맞는지? 틀린지? 결과값을 출력합니다.
|
||||
include_once("_common.php");
|
||||
|
||||
$captcha_key = isset($_POST['captcha_key']) ? $_POST['captcha_key'] : '';
|
||||
|
||||
$count = (int)get_session("ss_captcha_count");
|
||||
if ($count >= 5) { // 설정값 이상이면 자동등록방지 입력 문자가 맞아도 오류 처리
|
||||
echo false;
|
||||
} else {
|
||||
set_session("ss_captcha_count", $count + 1);
|
||||
|
||||
if( $captcha_key && function_exists('get_string_encrypt') ){
|
||||
$ip = md5(sha1($_SERVER['REMOTE_ADDR']));
|
||||
$captcha_key = get_string_encrypt($ip.$captcha_key);
|
||||
}
|
||||
echo (get_session("ss_captcha_key") === $captcha_key) ? true : false;
|
||||
}
|
||||
|
|
@ -1,18 +1,22 @@
|
|||
<?php
|
||||
include_once("_common.php");
|
||||
include_once(dirname(__FILE__).'/kcaptcha_config.php');
|
||||
include_once('captcha.lib.php');
|
||||
|
||||
while(true){
|
||||
$keystring='';
|
||||
for($i=0;$i<$length;$i++){
|
||||
$keystring.=$allowed_symbols{mt_rand(0,strlen($allowed_symbols)-1)};
|
||||
}
|
||||
if(!preg_match('/cp|cb|ck|c6|c9|rn|rm|mm|co|do|cl|db|qp|qb|dp|ww/', $keystring)) break;
|
||||
}
|
||||
|
||||
set_session("ss_captcha_count", 0);
|
||||
set_session("ss_captcha_key", $keystring);
|
||||
$captcha = new KCAPTCHA();
|
||||
$captcha->setKeyString(get_session("ss_captcha_key"));
|
||||
?>
|
||||
<?php
|
||||
include_once("_common.php");
|
||||
include_once(dirname(__FILE__).'/kcaptcha_config.php');
|
||||
include_once('captcha.lib.php');
|
||||
|
||||
while(true){
|
||||
$keystring='';
|
||||
for($i=0;$i<$length;$i++){
|
||||
$keystring.=$allowed_symbols[mt_rand(0,strlen($allowed_symbols)-1)];
|
||||
}
|
||||
if(!preg_match('/cp|cb|ck|c6|c9|rn|rm|mm|co|do|cl|db|qp|qb|dp|ww/', $keystring)) break;
|
||||
}
|
||||
|
||||
if( $keystring && function_exists('get_string_encrypt') ){
|
||||
$ip = md5(sha1($_SERVER['REMOTE_ADDR']));
|
||||
$keystring = get_string_encrypt($ip.$keystring);
|
||||
}
|
||||
|
||||
set_session("ss_captcha_count", 0);
|
||||
set_session("ss_captcha_key", $keystring);
|
||||
$captcha = new KCAPTCHA();
|
||||
$captcha->setKeyString(get_session("ss_captcha_key"));
|
||||
Loading…
Reference in a new issue