captcha 적용중
This commit is contained in:
@ -1,6 +1,6 @@
|
|||||||
<?
|
<?
|
||||||
include_once('./_common.php');
|
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));
|
$token = md5(uniqid(rand(), true));
|
||||||
|
|||||||
@ -15,8 +15,8 @@ if ($w == 'u' && $is_admin == 'super') {
|
|||||||
alert('데모 화면에서는 하실(보실) 수 없는 작업입니다.');
|
alert('데모 화면에서는 하실(보실) 수 없는 작업입니다.');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!chk_tcaptcha("user_answer")) {
|
if (!chk_captcha("wr_key")) {
|
||||||
alert("정상적인 접근이 아닌것 같습니다.");
|
alert("자동등록방지 코드에 오류가 있습니다.");
|
||||||
}
|
}
|
||||||
|
|
||||||
$mb_id = trim(strip_tags(mysql_escape_string($_POST[mb_id])));
|
$mb_id = trim(strip_tags(mysql_escape_string($_POST[mb_id])));
|
||||||
|
|||||||
@ -1,12 +1,14 @@
|
|||||||
<?
|
<?
|
||||||
include_once('./_common.php');
|
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']);
|
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'] = '회원가입결과';
|
$g4['title'] = '회원가입결과';
|
||||||
include_once('./_head.php');
|
include_once('./_head.php');
|
||||||
|
|||||||
8
extend/captcha.extend.php
Normal file
8
extend/captcha.extend.php
Normal 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"
|
||||||
|
);
|
||||||
|
?>
|
||||||
@ -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"
|
|
||||||
);
|
|
||||||
?>
|
|
||||||
14
js/wrest.js
14
js/wrest.js
@ -13,9 +13,7 @@ function wrestItemname(fld)
|
|||||||
function wrestTrim(fld)
|
function wrestTrim(fld)
|
||||||
{
|
{
|
||||||
var pattern = /(^\s+)|(\s+$)/g; // \s 공백 문자
|
var pattern = /(^\s+)|(\s+$)/g; // \s 공백 문자
|
||||||
//(/^\s+|\s+$/g,"");
|
return fld.value.replace(pattern, "");
|
||||||
var str = fld.value.replace(pattern, "");
|
|
||||||
return str;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 필수 입력 검사
|
// 필수 입력 검사
|
||||||
@ -60,7 +58,7 @@ function wrestEmail(fld)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 한글인지 검사 (자음, 모음만 있는 한글은 불가)
|
// 한글인지 검사 (자음, 모음 조합된 한글만 가능)
|
||||||
function wrestHangul(fld)
|
function wrestHangul(fld)
|
||||||
{
|
{
|
||||||
if (!wrestTrim(fld)) return;
|
if (!wrestTrim(fld)) return;
|
||||||
@ -69,7 +67,7 @@ function wrestHangul(fld)
|
|||||||
|
|
||||||
if (pattern.test(fld.value)) {
|
if (pattern.test(fld.value)) {
|
||||||
if (wrestFld == null) {
|
if (wrestFld == null) {
|
||||||
wrestMsg = wrestItemname(fld) + ' : 한글이 아닙니다. (자음, 모음만 있는 한글은 처리하지 않습니다.)\n';
|
wrestMsg = wrestItemname(fld) + ' : 한글이 아닙니다. (자음, 모음 조합된 한글만 가능)\n';
|
||||||
wrestFld = fld;
|
wrestFld = fld;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -186,7 +184,7 @@ function wrestMinLength(fld, css)
|
|||||||
{
|
{
|
||||||
if (!wrestTrim(fld)) return;
|
if (!wrestTrim(fld)) return;
|
||||||
|
|
||||||
var str = css.split('='); // minlength=?? <-- str[1]
|
var str = css.split('_'); // minlength_?? <-- str[1]
|
||||||
|
|
||||||
if (wrestFld == null) {
|
if (wrestFld == null) {
|
||||||
if (fld.value.length < parseInt(str[1])) {
|
if (fld.value.length < parseInt(str[1])) {
|
||||||
@ -283,8 +281,8 @@ function wrestSubmit()
|
|||||||
case "telnum" : wrestTelNum(el); break; // 김선용 2006.3 - 전화번호 형식 검사
|
case "telnum" : wrestTelNum(el); break; // 김선용 2006.3 - 전화번호 형식 검사
|
||||||
case "imgext" : wrestImgExt(el); break;
|
case "imgext" : wrestImgExt(el); break;
|
||||||
default :
|
default :
|
||||||
// css 가 minlength= 로 시작한다면 = 뒤의 숫자는 최소길이값
|
// css 가 minlength_ 로 시작한다면 _ 뒤의 숫자는 최소길이값
|
||||||
if (/^minlength\=/.test(css)) {
|
if (/^minlength\_/.test(css)) {
|
||||||
wrestMinLength(el, css); break;
|
wrestMinLength(el, css); break;
|
||||||
} else if (/^extension\=/.test(css)) {
|
} else if (/^extension\=/.test(css)) {
|
||||||
wrestExtension(el, css); break;
|
wrestExtension(el, css); break;
|
||||||
|
|||||||
@ -1597,9 +1597,9 @@ function check_mb_nick($reg_mb_nick)
|
|||||||
|
|
||||||
// 별명은 한글, 영문, 숫자만 가능
|
// 별명은 한글, 영문, 숫자만 가능
|
||||||
if (!check_string($reg_mb_nick, _G4_HANGUL_ + _G4_ALPHABETIC_ + _G4_NUMERIC_)) {
|
if (!check_string($reg_mb_nick, _G4_HANGUL_ + _G4_ALPHABETIC_ + _G4_NUMERIC_)) {
|
||||||
return "공백없이 한글, 영문, 숫자만 입력 가능합니다.";
|
return "별명은 공백없이 한글, 영문, 숫자만 입력 가능합니다.";
|
||||||
} else if (strlen($reg_mb_nick) < 4) {
|
} else if (strlen($reg_mb_nick) < 4) {
|
||||||
return "한글 2글자, 영문 4글자 이상 입력 가능합니다.";
|
return "별명은 한글 2글자, 영문 4글자 이상 입력 가능합니다.";
|
||||||
} else {
|
} else {
|
||||||
$row = sql_fetch(" select count(*) as cnt from {$g4['member_table']} where mb_nick = '$reg_mb_nick' ");
|
$row = sql_fetch(" select count(*) as cnt from {$g4['member_table']} where mb_nick = '$reg_mb_nick' ");
|
||||||
if ($row['cnt']) {
|
if ($row['cnt']) {
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
function chk_captcha(input_key)
|
function check_captcha(input_key)
|
||||||
{
|
{
|
||||||
if (typeof(input_key) != "undefined") {
|
if (typeof(input_key) != "undefined") {
|
||||||
var captcha_result = false;
|
var captcha_result = false;
|
||||||
@ -21,58 +21,16 @@ function chk_captcha(input_key)
|
|||||||
return true;
|
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() {
|
$(function() {
|
||||||
$("#captcha").click(function() {
|
$("#captcha").click(function(e) {
|
||||||
this.setAttribute("src", g4_path+"/plugin/captcha/run.php?t="+(new Date).getTime());
|
this.setAttribute("src", g4_path+"/plugin/captcha/run.php?t="+(new Date).getTime());
|
||||||
//$("#captcha_key").focus();//이미지 새로고침 후 입력박스에 포커스 : 지운아빠 2012-07-13
|
var keycode = (e.keyCode ? e.keyCode : e.which);
|
||||||
//캡챠 클릭 시에 포커스 줘야 하는데 페이지 새로 고침되면 포커스를 줘서 주석처리 : 지운아빠 2012-08-03
|
// 첫 실행에서는 포커스를 주지 않음
|
||||||
|
if (typeof(keycode) != "undefined") {
|
||||||
|
$("#captcha_key").focus();//이미지 새로고침 후 입력박스에 포커스 : 지운아빠 2012-07-13
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.css("cursor", "pointer")
|
.css("cursor", "pointer");
|
||||||
.trigger("click");
|
.trigger("click");
|
||||||
|
|
||||||
$("#captcha_wav").click(function(){
|
$("#captcha_wav").click(function(){
|
||||||
|
|||||||
@ -80,10 +80,6 @@ class captcha
|
|||||||
|
|
||||||
// The text to draw
|
// The text to draw
|
||||||
$captcha_key = $this->get_captcha_key();
|
$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_key', $captcha_key);
|
||||||
set_session('ss_captcha_cnt', 0);
|
set_session('ss_captcha_cnt', 0);
|
||||||
|
|||||||
@ -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_id_enabled" name="mb_id_enabled" value="">
|
||||||
<input type="hidden" id="mb_nick_enabled" name="mb_nick_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" 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_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))) { // 별명수정일이 지나지 않았다면 ?>
|
<? 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']?>">
|
<input type="hidden" name="mb_nick_default" value="<?=$member['mb_nick']?>">
|
||||||
@ -26,18 +25,18 @@ var member_skin_path = "<?=$member_skin_path?>";
|
|||||||
<tr>
|
<tr>
|
||||||
<th scope="row"><label for="reg_mb_id">아이디</label></th>
|
<th scope="row"><label for="reg_mb_id">아이디</label></th>
|
||||||
<td>
|
<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 id="msg_mb_id"></span>
|
||||||
<span>영문자, 숫자, _ 만 입력 가능. 최소 3자이상 입력하세요.</span>
|
<span>영문자, 숫자, _ 만 입력 가능. 최소 3자이상 입력하세요.</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row"><label for="mb_password">패스워드</label></th>
|
<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>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row"><label for="reg_mb_password_re">패스워드 확인</label></th>
|
<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>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
@ -46,7 +45,7 @@ var member_skin_path = "<?=$member_skin_path?>";
|
|||||||
<tr>
|
<tr>
|
||||||
<th scope="row"><label for="reg_mb_name">이름</label></th>
|
<th scope="row"><label for="reg_mb_name">이름</label></th>
|
||||||
<td>
|
<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 "(공백없이 한글만 입력 가능)"; } ?>
|
<? if ($w=='') { echo "(공백없이 한글만 입력 가능)"; } ?>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -55,7 +54,7 @@ var member_skin_path = "<?=$member_skin_path?>";
|
|||||||
<th scope="row"><label for="reg_mb_nick">별명</label></th>
|
<th scope="row"><label for="reg_mb_nick">별명</label></th>
|
||||||
<td>
|
<td>
|
||||||
<input type="hidden" name="mb_nick_default" value="<?=isset($member['mb_nick'])?$member['mb_nick']:'';?>">
|
<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>
|
<span id="msg_mb_nick"></span>
|
||||||
<br>공백없이 한글,영문,숫자만 입력 가능 (한글2자, 영문4자 이상)
|
<br>공백없이 한글,영문,숫자만 입력 가능 (한글2자, 영문4자 이상)
|
||||||
<br>별명을 바꾸시면 앞으로 <?=(int)$config['cf_nick_modify']?>일 이내에는 변경 할 수 없습니다.
|
<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>
|
<th scope="row"><label for="reg_mb_email">E-mail</label></th>
|
||||||
<td>
|
<td>
|
||||||
<input type="hidden" name="old_email" value="<?=$member['mb_email']?>">
|
<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>
|
<span id="msg_mb_email"></span>
|
||||||
<? if ($config['cf_use_email_certify']) { ?>
|
<? if ($config['cf_use_email_certify']) { ?>
|
||||||
<? if ($w=='') { echo "<br>e-mail 로 발송된 내용을 확인한 후 인증하셔야 회원가입이 완료됩니다."; } ?>
|
<? if ($w=='') { echo "<br>e-mail 로 발송된 내용을 확인한 후 인증하셔야 회원가입이 완료됩니다."; } ?>
|
||||||
@ -179,25 +178,23 @@ var member_skin_path = "<?=$member_skin_path?>";
|
|||||||
<? } ?>
|
<? } ?>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<?=get_captcha('wr_key', 1);?>
|
<?=get_captcha("wr_key", 1);?>
|
||||||
|
|
||||||
<div class="btn_confirm">
|
<div class="btn_confirm">
|
||||||
<input type="submit" value="회원가입" accesskey="s">
|
<input type="submit" value="회원가입" accesskey="s">
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<script src="<?="$g4[path]/js/jquery.kcaptcha.js"?>"></script>
|
|
||||||
<script>
|
<script>
|
||||||
$(function(){
|
$(function(){
|
||||||
|
/*
|
||||||
$("#reg_mb_id").blur(function(){
|
$("#reg_mb_id").blur(function(){
|
||||||
var msg = reg_mb_id_check();
|
var msg = reg_mb_id_check();
|
||||||
//$("#msg_mb_id").html(msg).css('color', 'red');
|
|
||||||
if (msg) alert(msg);
|
if (msg) alert(msg);
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#reg_mb_nick").blur(function(){
|
$("#reg_mb_nick").blur(function(){
|
||||||
var msg = reg_mb_nick_check();
|
var msg = reg_mb_nick_check();
|
||||||
//$("#msg_mb_nick").html(msg).css('color', 'red');
|
|
||||||
if (msg) alert(msg);
|
if (msg) alert(msg);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -205,6 +202,7 @@ $(function(){
|
|||||||
var msg = reg_mb_email_check();
|
var msg = reg_mb_email_check();
|
||||||
if (msg) alert(msg);
|
if (msg) alert(msg);
|
||||||
});
|
});
|
||||||
|
*/
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user