captcha 적용중

This commit is contained in:
gnuboard
2013-01-08 09:04:13 +09:00
parent 3dfea05d47
commit 7feb58aeab
10 changed files with 41 additions and 89 deletions

View File

@ -1,6 +1,6 @@
<?
include_once('./_common.php');
include_once($g4['path'].'/plugin/captcha/captcha.lib.php');
if ($captcha->lib) include_once($captcha->lib);
// 불법접근을 막도록 토큰생성
$token = md5(uniqid(rand(), true));

View File

@ -15,8 +15,8 @@ if ($w == 'u' && $is_admin == 'super') {
alert('데모 화면에서는 하실(보실) 수 없는 작업입니다.');
}
if (!chk_tcaptcha("user_answer")) {
alert("정상적인 접근이 아닌것 같습니다.");
if (!chk_captcha("wr_key")) {
alert("자동등록방지 코드에 오류가 있습니다.");
}
$mb_id = trim(strip_tags(mysql_escape_string($_POST[mb_id])));

View File

@ -1,12 +1,14 @@
<?
include_once('./_common.php');
$mb = get_member($_SESSION[ss_mb_reg]);
if (isset($_SESSION['ss_mb_reg']))
$mb = get_member($_SESSION['ss_mb_reg']);
// 회원정보가 없다면 초기 페이지로 이동
if (!$mb[mb_id])
if (!$mb['mb_id'])
goto_url($g4['path']);
$member_skin_path = $g4['path'].'/skin/member/'.$config[cf_member_skin];
$member_skin_path = $g4['path'].'/skin/member/'.$config['cf_member_skin'];
$g4['title'] = '회원가입결과';
include_once('./_head.php');

View File

@ -0,0 +1,8 @@
<?
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$captcha = (object)array(
'lib' => $g4['path']."/plugin/captcha/captcha.lib.php",
'js' => $g4['path']."/plugin/captcha/captcha.js"
);
?>

View File

@ -1,8 +0,0 @@
<?
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$captcha = (object)array(
'lib' => $g4['path']."/plugin/tcaptcha/tcaptcha.lib.php",
'js' => $g4['path']."/plugin/tcaptcha/tcaptcha.js"
);
?>

View File

@ -13,9 +13,7 @@ function wrestItemname(fld)
function wrestTrim(fld)
{
var pattern = /(^\s+)|(\s+$)/g; // \s 공백 문자
//(/^\s+|\s+$/g,"");
var str = fld.value.replace(pattern, "");
return str;
return fld.value.replace(pattern, "");
}
// 필수 입력 검사
@ -60,7 +58,7 @@ function wrestEmail(fld)
}
}
// 한글인지 검사 (자음, 모음만 있는 한글은 불가)
// 한글인지 검사 (자음, 모음 조합된 한글만 가능)
function wrestHangul(fld)
{
if (!wrestTrim(fld)) return;
@ -69,7 +67,7 @@ function wrestHangul(fld)
if (pattern.test(fld.value)) {
if (wrestFld == null) {
wrestMsg = wrestItemname(fld) + ' : 한글이 아닙니다. (자음, 모음만 있는 한글은 처리하지 않습니다.)\n';
wrestMsg = wrestItemname(fld) + ' : 한글이 아닙니다. (자음, 모음 조합된 한글만 가능)\n';
wrestFld = fld;
}
}
@ -186,7 +184,7 @@ function wrestMinLength(fld, css)
{
if (!wrestTrim(fld)) return;
var str = css.split('='); // minlength=?? <-- str[1]
var str = css.split('_'); // minlength_?? <-- str[1]
if (wrestFld == null) {
if (fld.value.length < parseInt(str[1])) {
@ -283,8 +281,8 @@ function wrestSubmit()
case "telnum" : wrestTelNum(el); break; // 김선용 2006.3 - 전화번호 형식 검사
case "imgext" : wrestImgExt(el); break;
default :
// css 가 minlength= 로 시작한다면 = 뒤의 숫자는 최소길이값
if (/^minlength\=/.test(css)) {
// css 가 minlength_ 로 시작한다면 _ 뒤의 숫자는 최소길이값
if (/^minlength\_/.test(css)) {
wrestMinLength(el, css); break;
} else if (/^extension\=/.test(css)) {
wrestExtension(el, css); break;

View File

@ -1597,9 +1597,9 @@ function check_mb_nick($reg_mb_nick)
// 별명은 한글, 영문, 숫자만 가능
if (!check_string($reg_mb_nick, _G4_HANGUL_ + _G4_ALPHABETIC_ + _G4_NUMERIC_)) {
return "공백없이 한글, 영문, 숫자만 입력 가능합니다.";
return "별명은 공백없이 한글, 영문, 숫자만 입력 가능합니다.";
} else if (strlen($reg_mb_nick) < 4) {
return "한글 2글자, 영문 4글자 이상 입력 가능합니다.";
return "별명은 한글 2글자, 영문 4글자 이상 입력 가능합니다.";
} else {
$row = sql_fetch(" select count(*) as cnt from {$g4['member_table']} where mb_nick = '$reg_mb_nick' ");
if ($row['cnt']) {

View File

@ -1,4 +1,4 @@
function chk_captcha(input_key)
function check_captcha(input_key)
{
if (typeof(input_key) != "undefined") {
var captcha_result = false;
@ -21,58 +21,16 @@ function chk_captcha(input_key)
return true;
}
function l_PlaySound(url, placeholderId) {
if (document.getElementById) {
var soundUrl = url;
var placeholder = document.getElementById(placeholderId);
placeholder.innerHTML = "";
document.body.style.cursor = 'wait';
var html5SoundPlayed = false;
var browserCompatibilityCheck = document.createElement('audio');
if (!!(browserCompatibilityCheck.canPlayType) &&
!!(browserCompatibilityCheck.canPlayType("audio/wav")) &&
!l_DetectFirefox3()) {
sound = new Audio(soundUrl);
sound.id = 'LBD_CaptchaSoundAudio';
sound.autoplay = true;
sound.controls = false;
sound.autobuffer = false;
sound.loop = false;
placeholder.appendChild(sound);
html5SoundPlayed = true;
}
if (!html5SoundPlayed) {
var objectSrc = "<object id='LBD_CaptchaSoundObject' classid='clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95' height='0' width='0' style='width:0; height:0;'><param name='AutoStart' value='1' /><param name='Volume' value='0' /><param name='PlayCount' value='1' /><param name='FileName' value='" + soundUrl + "' /><embed id='LBD_CaptchaSoundEmbed' src='" + soundUrl + "' autoplay='true' hidden='true' volume='100' type='audio/x-wav' style='display:inline;' /></object>";
placeholder.innerHTML = objectSrc;
}
document.body.style.cursor = 'default';
}
}
function l_DetectFirefox3() {
var detected = false;
if (navigator && navigator.userAgent) {
var matches = navigator.userAgent.match(/(Firefox)\/(3\.6\.[^;\+,\/\s]+)/);
if (matches) {
detected = true;
}
}
return detected;
}
$(function() {
$("#captcha").click(function() {
$("#captcha").click(function(e) {
this.setAttribute("src", g4_path+"/plugin/captcha/run.php?t="+(new Date).getTime());
//$("#captcha_key").focus();//이미지 새로고침 후 입력박스에 포커스 : 지운아빠 2012-07-13
//캡챠 클릭 시에 포커스 줘야 하는데 페이지 새로 고침되면 포커스를 줘서 주석처리 : 지운아빠 2012-08-03
var keycode = (e.keyCode ? e.keyCode : e.which);
// 첫 실행에서는 포커스를 주지 않음
if (typeof(keycode) != "undefined") {
$("#captcha_key").focus();//이미지 새로고침 후 입력박스에 포커스 : 지운아빠 2012-07-13
}
})
.css("cursor", "pointer")
.css("cursor", "pointer");
.trigger("click");
$("#captcha_wav").click(function(){

View File

@ -80,10 +80,6 @@ class captcha
// The text to draw
$captcha_key = $this->get_captcha_key();
/*
$_SESSION['ss_captcha_key'] = $captcha_key;
$_SESSION['ss_captcha_cnt'] = 0;
*/
set_session('ss_captcha_key', $captcha_key);
set_session('ss_captcha_cnt', 0);

View File

@ -14,7 +14,6 @@ var member_skin_path = "<?=$member_skin_path?>";
<input type="hidden" id="mb_id_enabled" name="mb_id_enabled" value="">
<input type="hidden" id="mb_nick_enabled" name="mb_nick_enabled" value="">
<input type="hidden" id="mb_email_enabled" name="mb_email_enabled" value="">
<!-- <input type="hidden" name="token" value="<?=$token?>"> -->
<? if (isset($member['mb_sex'])) { ?><input type="hidden" name="mb_sex" value="<?=$member['mb_sex']?>"><? } ?>
<? if (isset($member['mb_nick_date']) && $member['mb_nick_date'] <= date("Y-m-d", $g4['server_time'] - ($config['cf_nick_modify'] * 86400))) { // 별명수정일이 지나지 않았다면 ?>
<input type="hidden" name="mb_nick_default" value="<?=$member['mb_nick']?>">
@ -26,18 +25,18 @@ var member_skin_path = "<?=$member_skin_path?>";
<tr>
<th scope="row"><label for="reg_mb_id">아이디</label></th>
<td>
<input type="text" id="reg_mb_id" name="mb_id" value="<?=$member['mb_id']?>" maxlength="20" <? if ($w=='u') { echo "readonly style='background-color:#dddddd;'"; } ?> <? if ($w=='') { echo 'required="required"'; } ?> title="회원아이디">
<input type="text" id="reg_mb_id" name="mb_id" class="minlength_3" value="<?=$member['mb_id']?>" maxlength="20" <? if ($w=='u') { echo "readonly style='background-color:#dddddd;'"; } ?> <? if ($w=='') { echo 'required="required"'; } ?> title="회원아이디">
<span id="msg_mb_id"></span>
<span>영문자, 숫자, _ 만 입력 가능. 최소 3자이상 입력하세요.</span>
</td>
</tr>
<tr>
<th scope="row"><label for="mb_password">패스워드</label></th>
<td><input type="password" id="reg_mb_password" name="mb_password" maxlength="20" <?=($w=='')?'required="required"':'';?> title="패스워드"></td>
<td><input type="password" id="reg_mb_password" name="mb_password" class="minlength_3" <?=($w=='')?'required="required"':'';?> maxlength="20" title="패스워드"></td>
</tr>
<tr>
<th scope="row"><label for="reg_mb_password_re">패스워드 확인</label></th>
<td><input type="password" id="reg_mb_password_re" name="mb_password_re" maxlength="20" <?=($w=='')?'required="required"':'';?> title="패스워드 확인"></td>
<td><input type="password" id="reg_mb_password_re" name="mb_password_re" class="minlength_3" <?=($w=='')?'required="required"':'';?> maxlength="20" title="패스워드 확인"></td>
</tr>
</table>
@ -46,7 +45,7 @@ var member_skin_path = "<?=$member_skin_path?>";
<tr>
<th scope="row"><label for="reg_mb_name">이름</label></th>
<td>
<input id="reg_mb_name" name="mb_name" value="<?=$member['mb_name']?>" <?=$member['mb_name']?"readonly2":"";?><?echo($w==''?'required="required"':'');?> title="이름">
<input type="text" id="reg_mb_name" name="mb_name" class="hangul" value="<?=$member['mb_name']?>" <?=$member['mb_name']?"readonly2":"";?><?echo($w==''?'required="required"':'');?> title="이름">
<? if ($w=='') { echo "(공백없이 한글만 입력 가능)"; } ?>
</td>
</tr>
@ -55,7 +54,7 @@ var member_skin_path = "<?=$member_skin_path?>";
<th scope="row"><label for="reg_mb_nick">별명</label></th>
<td>
<input type="hidden" name="mb_nick_default" value="<?=isset($member['mb_nick'])?$member['mb_nick']:'';?>">
<input type="text" id="reg_mb_nick" name="mb_nick" maxlength="20" value="<?=isset($member['mb_nick'])?$member['mb_nick']:'';?>"<?echo($w==''?'required="required"':'');?> title="별명">
<input type="text" id="reg_mb_nick" name="mb_nick" value="<?=isset($member['mb_nick'])?$member['mb_nick']:'';?>" maxlength="20" <?echo($w==''?'required="required"':'');?> title="별명">
<span id="msg_mb_nick"></span>
<br>공백없이 한글,영문,숫자만 입력 가능 (한글2자, 영문4자 이상)
<br>별명을 바꾸시면 앞으로 <?=(int)$config['cf_nick_modify']?>일 이내에는 변경 할 수 없습니다.
@ -67,7 +66,7 @@ var member_skin_path = "<?=$member_skin_path?>";
<th scope="row"><label for="reg_mb_email">E-mail</label></th>
<td>
<input type="hidden" name="old_email" value="<?=$member['mb_email']?>">
<input type="text" id="reg_mb_email" name="mb_email" maxlength="100" value='<?=isset($member['mb_email'])?$member['mb_email']:'';?>'>
<input type="text" id="reg_mb_email" name="mb_email" class="email" value='<?=isset($member['mb_email'])?$member['mb_email']:'';?>' maxlength="100" required="required" title="E-mail">
<span id="msg_mb_email"></span>
<? if ($config['cf_use_email_certify']) { ?>
<? if ($w=='') { echo "<br>e-mail 로 발송된 내용을 확인한 후 인증하셔야 회원가입이 완료됩니다."; } ?>
@ -179,25 +178,23 @@ var member_skin_path = "<?=$member_skin_path?>";
<? } ?>
</table>
<?=get_captcha('wr_key', 1);?>
<?=get_captcha("wr_key", 1);?>
<div class="btn_confirm">
<input type="submit" value="회원가입" accesskey="s">
</div>
</form>
<script src="<?="$g4[path]/js/jquery.kcaptcha.js"?>"></script>
<script>
$(function(){
/*
$("#reg_mb_id").blur(function(){
var msg = reg_mb_id_check();
//$("#msg_mb_id").html(msg).css('color', 'red');
if (msg) alert(msg);
});
$("#reg_mb_nick").blur(function(){
var msg = reg_mb_nick_check();
//$("#msg_mb_nick").html(msg).css('color', 'red');
if (msg) alert(msg);
});
@ -205,6 +202,7 @@ $(function(){
var msg = reg_mb_email_check();
if (msg) alert(msg);
});
*/
});