서버 점검 안내

dsclub은 서비스의 안정성과 성능 향상을 위해
매일 04시 30분에 정기 점검이 진행됩니다.

점검 시간: 오전 4시 30분 ~ 4시 35분

해당 시간 동안 일시적으로 서비스에 접속이 불가능하오니, 양해 부탁드립니다.

Twave 테마 회원 프로필 수정 업데이트 > 자료실 (zip)

Twave 테마 회원 프로필 수정 업데이트

페이지 정보

작성자 회원이미지 tak2 (192.♡.0.1) 작성일 24-11-11 00:30 조회 38 댓글 0

본문

[Twave 테마 베타 2 / TwaveCv2 버전]
업데이트(수정) 사항:
권장자료 중 jihan006?님의 https://sir.kr/g5_plugin/11262 가 필수적이었지만(회원 아이콘과 회원 이미지를 동일하게 하는 부분을 구현하지 못 했음) 회원 프로필 수정에서 복제방식으로 사용할 수 있도록 수정하였습니다.
방식: 회원 이미지를 업로드하면 회원 이미지를 회원 아이콘으로 사용하도록 자바스크립트를 통해 구현.

이 뿐만 아니라 회원 프로필 이미지에서 보다 더 쉽게 이미지를 이동, 축소, 확대할 수 있도록 자동 배치(자석)기능을 추가했으며,
회원 아이콘 허용 용량이 초과될 수 있는 문제를 고려하여 캔버스를 사용하여 이미지 용량을 줄이도록 구현했습니다. (gpt-4)
 

<?php

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가


// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨

add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);

?>


<div class="register">

    <script src="<?php echo G5_JS_URL ?>/jquery.register_form.js"></script>

    <?php if($config['cf_cert_use'] && ($config['cf_cert_ipin'] || $config['cf_cert_hp'])) { ?>

    <script src="<?php echo G5_JS_URL ?>/certify.js?v=<?php echo G5_JS_VER; ?>"></script>

    <?php } ?>


    <form name="fregisterform" id="fregisterform" action="<?php echo $register_action_url ?>" onsubmit="return fregisterform_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off">

    <input type="hidden" name="w" value="<?php echo $w ?>">

    <input type="hidden" name="url" value="<?php echo $urlencode ?>">

    <input type="hidden" name="agree" value="<?php echo $agree ?>">

    <input type="hidden" name="agree2" value="<?php echo $agree2 ?>">

    <input type="hidden" name="cert_type" value="<?php echo $member['mb_certify']; ?>">

    <input type="hidden" name="cert_no" value="">

    

    <input type="hidden" name="mb_open" value="1">

    <?php if (isset($member['mb_sex'])) { ?><input type="hidden" name="mb_sex" value="<?php echo $member['mb_sex'] ?>"><?php } ?>

    <?php if (isset($member['mb_nick_date']) && $member['mb_nick_date'] > date("Y-m-d", G5_SERVER_TIME - ($config['cf_nick_modify'] * 86400))) { // 닉네임수정일이 지나지 않았다면 ?>

    <input type="hidden" name="mb_nick_default" value="<?php echo get_text($member['mb_nick']) ?>">

    <input type="hidden" name="mb_nick" value="<?php echo get_text($member['mb_nick']) ?>">

    <?php } ?>


<style>

  input:focus {outline:none;}

  .password-input-wrapper {

    position: relative;

}


.input-wrapper {

    position: relative;

}


.password-toggle-icon {

    position: absolute;

    right: 15px;

    transform: translateY(-50%);

    cursor: pointer;

    font-size:15px;

    top:40%

}


#fregisterform .profile_img img {

min-width:100px;

width:100px;

max-width:100px;

min-height:100px;

height:100px;

max-height:100px;

border-radius:50%;

height: auto;

}


.profile_img {

   display: flex; /* Flexbox 활성화 */

    justify-content: center; /* 가로 중앙 정렬 */

    margin-bottom:15px

}


.register {

padding:10px;

}


.profile-textarea-wrapper {

    position: relative;

    background-color: #f9f9f9;

    border: 1px solid #f2f2f2;

    border-radius: 15px;

    padding: 10px;

}


.profile-textarea {

    height: 100px;

    width: 100%;

    padding-right: 60px;

    box-sizing: border-box;

    border: none;

    background-color: transparent;

    font-size: 14px;

    color: #14171a;

    resize: none;

}


.profile-textarea:focus {

    outline: none;

}


.profile-text-count {

    position: absolute;

    bottom: 10px;

    right: 10px;

    font-size: 12px;

    color: #657786;

}

li, ul {

    list-style-type: none;

    padding: 0;

    margin: 0;

}

</style>

<script>

// 비밀번호 보기/숨기기 토글 기능

const passwordInput = document.getElementById('reg_mb_password');

const passwordToggleIcon = document.querySelector('.password-toggle-icon i');


passwordToggleIcon.addEventListener('click', () => {

    if (passwordInput.type === 'password') {

        passwordInput.type = 'text';

        passwordToggleIcon.classList.remove('fa-lock');

        passwordToggleIcon.classList.add('fa-unlock-alt');

    } else {

        passwordInput.type = 'password';

        passwordToggleIcon.classList.remove('fa-unlock-alt');

        passwordToggleIcon.classList.add('fa-lock');

    }

});

</script>

<script>

document.addEventListener('DOMContentLoaded', function() {

    var profileTextarea = document.getElementById('reg_mb_profile');

    var profileTextCount = document.getElementById('profile_text_count');


    profileTextarea.addEventListener('input', function() {

        // 줄바꿈 문자 제거

        this.value = this.value.replace(/\n/g, '');


        var textLength = this.value.length;

        profileTextCount.textContent = textLength;

    });

});

</script>

<script>

document.getElementById('check_password').addEventListener('click', function() {

    var password = document.getElementById('reg_mb_password').value;

    var passwordConfirm = document.getElementById('reg_mb_password_re').value;

</script>


<div class="profile">

<?php if ($member['mb_level'] >= $config['cf_icon_level'] && $config['cf_member_img_size'] && $config['cf_member_img_width'] && $config['cf_member_img_height']) { ?>

    <span class="profile_img">

        <img id="profileImage" src="<?php echo $w == 'u' && file_exists($mb_img_path) ? $mb_img_url : $config['cf_member_img_url']; ?>" alt="회원프로필이미지">

    </span>

    <li class="reg_mb_img_file filebox">

        <input type="hidden" class="fileName" readonly="readonly" placeholder="회원이미지">

        <label for="reg_mb_img" class="btn_file" style="display:none;"><span class="sound_only">회원이미지</span>이미지선택</label>

        <input type="file" name="mb_img" id="reg_mb_img" class="uploadBtn" style="display:none;" accept="image/*">

    </li>

    <a href="#" id="editPhotoLink" style="float:right;background-color:#f2f2f2;border:none;color:#3a3a3a;border-radius:15px;padding:10px 15px;font-size:12px;font-weight:500;margin-bottom:10px;">사진 수정</a>

    <span id="photoUploadText" style="display:none; float:right;background-color:#0685fe;border:none;color:#f9f9f9;border-radius:15px;padding:10px 15px;font-size:12px;font-weight:500;margin-bottom:10px">사진 업로드 및 사진 촬영</span>

<?php } ?>


<?php if ($config['cf_use_member_icon'] && $member['mb_level'] >= $config['cf_icon_level']) { ?>

    <li class="filebox" style="display:none;width:0;height:0;z-index:-9999">

        <input type="file" name="mb_icon" id="reg_mb_icon" class="uploadBtn">

    </li>


    <script>

        document.getElementById('reg_mb_img').addEventListener('change', function() {

            var file = this.files[0];

            if (file && file.size > 5 * 1024 * 1024) { // 5MB 이상인지 확인

                compressImage(file, function(compressedFile) {

                    var iconInput = document.getElementById('reg_mb_icon');

                    var dataTransfer = new DataTransfer();

                    dataTransfer.items.add(compressedFile);

                    iconInput.files = dataTransfer.files;

                });

            } else if (file) {

                var iconInput = document.getElementById('reg_mb_icon');

                var dataTransfer = new DataTransfer();

                dataTransfer.items.add(file);

                iconInput.files = dataTransfer.files;

            }

        });


        function compressImage(file, callback) {

            var reader = new FileReader();

            reader.onload = function(event) {

                var img = new Image();

                img.onload = function() {

                    var canvas = document.createElement('canvas');

                    var ctx = canvas.getContext('2d');


                    // 이미지 크기 설정 (이 크기를 조정하여 압축률 변경 가능)

                    var maxWidth = 800;

                    var maxHeight = 800;

                    var width = img.width;

                    var height = img.height;


                    if (width > height) {

                        if (width > maxWidth) {

                            height = Math.round((height * maxWidth) / width);

                            width = maxWidth;

                        }

                    } else {

                        if (height > maxHeight) {

                            width = Math.round((width * maxHeight) / height);

                            height = maxHeight;

                        }

                    }


                    canvas.width = width;

                    canvas.height = height;


                    ctx.drawImage(img, 0, 0, width, height);


                    canvas.toBlob(function(blob) {

                        callback(new File([blob], file.name, {

                            type: file.type,

                            lastModified: Date.now()

                        }));

                    }, file.type, 0.55); // 0.55은 압축 품질 (0.0 ~ 1.0)

                };

                img.src = event.target.result;

            };

            reader.readAsDataURL(file);

        }

    </script>

<?php } ?>


<script>

    document.getElementById('editPhotoLink').addEventListener('click', function(event) {

        event.preventDefault();

        this.style.display = 'none';  // "사진 수정" 텍스트 숨기기

        document.getElementById('photoUploadText').style.display = 'block'; // "사진 업로드 및 사진 촬영" 텍스트 보이기

    });


    document.getElementById('photoUploadText').addEventListener('click', function() {

        document.getElementById('reg_mb_img').click();

    });


    document.getElementById('reg_mb_img').addEventListener('change', function(event) {

        const file = event.target.files[0];

        if (file) {

            const reader = new FileReader();

            reader.onload = function(e) {

                document.getElementById('profileImage').src = e.target.result;  // 업로드된 이미지로 프로필 이미지 업데이트

            };

            reader.readAsDataURL(file);

        }

    });

</script>


<div class="profile_nick">

<input type="text" name="mb_nick" id="reg_mb_nick" required class="frm_input required nospace full_input" size="10" maxlength="20" value="<?php echo $member['mb_nick'];?>" style="border:1px solid #f1f1f1;background-color:#f9f9f9;border-radius:15px;padding:10px;margin-bottom:5px">

<!-- 간편 프로필 수정을 위해 숨김 처리 -->

           <input type="hidden" name="mb_id" value="<?php echo $member['mb_id'] ?>" id="reg_mb_id" class="frm_input full_input <?php echo $required ?> <?php echo $readonly ?>" minlength="3" maxlength="20" <?php echo $required ?> <?php echo $readonly ?> placeholder="아이디">

                       <input type="hidden" id="reg_mb_name" name="mb_name" value="<?php echo get_text($member['mb_name']) ?>" <?php echo $required ?> <?php echo $readonly; ?> class="frm_input full_input <?php echo $required ?> <?php echo $readonly ?>" placeholder="이름">

                <input type="hidden" name="old_email" value="<?php echo $member['mb_email'] ?>">

                <input type="hidden" name="mb_email" value="<?php echo isset($member['mb_email'])?$member['mb_email']:''; ?>" id="reg_mb_email" required class="frm_input email required" size="50" maxlength="100" placeholder="E-mail">

</div>


<div class="password-input-wrapper">

    <div class="input-wrapper">

        <input type="password" name="mb_password" id="reg_mb_password" <?php echo $required ?> class="frm_input full_input <?php echo $required ?>" minlength="3" maxlength="20" value="<?php echo $mb_profile ?>" placeholder="비밀번호" style="border:1px solid #f1f1f1;background-color:#f9f9f9;border-radius:15px;padding:10px;margin-bottom:15px;padding-right: 40px;" oninput="syncPassword()">

        <span class="password-toggle-icon">

            <i class="fa fa-lock"></i>

        </span>

    </div>

</div>

<input type="password" name="mb_password_re" id="reg_mb_password_re" <?php echo $required ?> class="frm_input full_input <?php echo $required ?>" minlength="3" maxlength="20" placeholder="비밀번호 확인" style="display:none">


<script>

function syncPassword() {

    const password = document.getElementById('reg_mb_password').value;

    document.getElementById('reg_mb_password_re').value = password;

}

</script>


       <?php if ($config['cf_use_profile']) { ?>

       <li>

           <label for="reg_mb_profile" class="sound_only">자기소개</label>

<div class="profile-textarea-wrapper">

    <textarea name="mb_profile" id="reg_mb_profile" class="<?php echo $config['cf_req_profile']?"required":""; ?> profile-textarea" <?php echo $config['cf_req_profile']?"required":""; ?> maxlength="100" placeholder="자기소개" style="resize: none;"><?php echo $member['mb_profile'] ?></textarea>

    <div class="profile-text-count"><span id="profile_text_count">0</span> / 100</div>

</div>

</li>

<?php } ?>

<!-- 

       <?php

       //회원정보 수정인 경우 소셜 계정 출력

       if( $w == 'u' && function_exists('social_member_provider_manage') ){

           social_member_provider_manage();

       }

       ?>

-->

</div>


       <li class="is_captcha_use">

           <span  class="frm_label">자동등록방지</span>

           <?php echo captcha_html(); ?>

       </li>

   </ul>

    </div>


    <div class="btn_confirm" style="margin:20px;z-index:999999999">

        <button type="submit" id="btn_submit" class="btn_submit" accesskey="s" style="text-align:center;width:100%;padding:15px;border:none;border-radius:15px;background-color:#0685fe;font-size:13px;font-weight:520;color:#f9f9f9;max-width:650px;"><?php echo $w==''?'회원가입':'완료'; ?></button>

    </div>

    </form>


<style>

#ft {

  height: 0;

  width: 0;

  color: #0000;

  font-size: 0;

}


.gram_fix_btn {

  height: 0;

  width: 0;

  color: #0000;

  font-size: 0;

}


.gram_fix_btn li {

  height: 0;

  width: 0;

  color: #0000;

  font-size: 0;

}


.gram_fix_btn a {

  height: 0;

  width: 0;

  color: #0000;

  font-size: 0;

}


.gf_btn {

  height: 0;

  width: 0;

  color: #0000;

  font-size: 0;

}


.gf_home {

  height: 0;

  width: 0;

  color: #0000;

  font-size: 0;

}


.fa {

  height: 0;

  width: 0;

  color: #0000;

  font-size: 0;

}


.sound_only {

  height: 0;

  width: 0;

  color: #0000;

  font-size: 0;

}


.gf_sch {

  height: 0;

  width: 0;

  color: #0000;

  font-size: 0;

}


.gf_wrt {

  height: 0;

  width: 0;

  color: #0000;

  font-size: 0;

}


.fa-sticky-note-o {

  height: 0;

  width: 0;

  color: #0000;

  font-size: 0;

}


.fprofile_img img{

  height: 0;

  width: 0;

  color: #0000;

  font-size: 0;

}


.gf_logout {

  height: 0;

  width: 0;

  color: #0000;

  font-size: 0;

}

</style>


<style>

  /* 이미지 편집 모달 스타일 */

  .image-editor-modal {

    display: none;

    position: fixed;

    z-index: 1000;

    top: 0;

    left: 0;

    width: 100%;

    height: 100%;

    background-color: rgba(0, 0, 0, 0.85);

    align-items: center;

    justify-content: center;

    font-family: 'Arial', sans-serif;

  }


  .image-editor-content {

    background-color: #ffffff;

    padding: 10px;

    border-radius: 20px;

    max-width: 90%;

    text-align: center;

    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);

    width: 90%;

    max-width: 360px;

  }


  .editor-canvas {

    border-radius: 8px;

    border: 1px solid #e6e6e6;

    width: 100%;

    height: auto;

    margin-bottom: 10px;

  }


  /* 버튼 스타일 */

  .image-editor-buttons {

    display: flex;

    justify-content: space-around;

    margin-top: 10px;

  }


  .image-editor-buttons button {

    background-color: #ff7d16;

    color: #fff;

    border: none;

    border-radius: 20px;

    padding: 8px 12px;

    cursor: pointer;

    font-size: 13px;

    transition: background-color 0.3s ease;

    flex: 1;

    margin: 0 5px;

  }


  .image-editor-buttons button:hover {

    background-color: #ff7d16;

  }


  /* 취소 버튼 별도 스타일 */

  #cancelEdit {

    background-color: #dbdbdb;

    color: #262626;

  }


  #cancelEdit:hover {

    background-color: #c1c1c1;

  }

</style>


<!-- 이미지 편집 모달 구조 -->

<div class="image-editor-modal" id="imageEditorModal">

  <div class="image-editor-content">

    <canvas id="editorCanvas" class="editor-canvas"></canvas>

    <div class="image-editor-buttons">

      <button type="button" id="rotateLeft">회전</button>

      <button type="button" id="applyChanges">적용</button>

      <button type="button" id="cancelEdit">취소</button>

    </div>

  </div>

</div>


<script>

  const imageEditorModal = document.getElementById('imageEditorModal');

  const editorCanvas = document.getElementById('editorCanvas');

  const ctx = editorCanvas.getContext('2d');

  let scale = 1;

  let rotation = 0;

  let img = new Image();

  let offsetX = 0;

  let offsetY = 0;

  let initialDistance = null;

  const canvasSize = 300; // 1:1 비율을 위한 고정 크기

  const snapThreshold = 5; // 중앙으로 스냅되는 거리 설정


  document.getElementById('reg_mb_img').addEventListener('change', function(event) {

    const file = event.target.files[0];

    if (file) {

      const reader = new FileReader();

      reader.onload = function(e) {

        imageEditorModal.style.display = 'flex';

        document.body.style.overflow = 'hidden'; // 모달 열릴 때 스크롤 잠금

        img.src = e.target.result;

        img.onload = function() {

          editorCanvas.width = canvasSize;

          editorCanvas.height = canvasSize;

          applyTransformations();

        };

      };

      reader.readAsDataURL(file);

    }

  });


function applyTransformations() {

  ctx.clearRect(0, 0, editorCanvas.width, editorCanvas.height);

  ctx.save();

  ctx.translate(editorCanvas.width / 2 + offsetX, editorCanvas.height / 2 + offsetY);


  // 크기 조절 스냅 기능

  if (Math.abs(scale - 1) < 0.1) {

    scale = 1;

  } else if (Math.abs(scale - 1.5) < 0.1) {

    scale = 1.5;

  } else if (Math.abs(scale - 2) < 0.1) {

    scale = 2;

  }


  ctx.scale(scale, scale);

  ctx.rotate((rotation * Math.PI) / 180);


  const imgAspect = img.width / img.height;

  const canvasAspect = editorCanvas.width / editorCanvas.height;

  let renderWidth, renderHeight;


  if (imgAspect > canvasAspect) {

    renderHeight = editorCanvas.height;

    renderWidth = img.width * (renderHeight / img.height);

  } else {

    renderWidth = editorCanvas.width;

    renderHeight = img.height * (renderWidth / img.width);

  }


  ctx.drawImage(img, -renderWidth / 2, -renderHeight / 2, renderWidth, renderHeight);

  ctx.restore();

  snapToEdges(); // 위치 자석 기능 적용

}



  function snapToEdges() {

    if (Math.abs(offsetX) < snapThreshold) {

      offsetX = 0;

    }

    if (Math.abs(offsetY) < snapThreshold) {

      offsetY = 0;

    }


    if (Math.abs(offsetX + editorCanvas.width / 2) < snapThreshold) {

      offsetX = -editorCanvas.width / 2;

    }

    if (Math.abs(offsetX - editorCanvas.width / 2) < snapThreshold) {

      offsetX = editorCanvas.width / 2;

    }

    if (Math.abs(offsetY + editorCanvas.height / 2) < snapThreshold) {

      offsetY = -editorCanvas.height / 2;

    }

    if (Math.abs(offsetY - editorCanvas.height / 2) < snapThreshold) {

      offsetY = editorCanvas.height / 2;

    }

  }


  editorCanvas.addEventListener('touchstart', function(e) {

    e.preventDefault();

    if (e.touches.length === 1) {

      lastX = e.touches[0].clientX;

      lastY = e.touches[0].clientY;

    } else if (e.touches.length === 2) {

      initialDistance = getDistance(e.touches[0], e.touches[1]);

    }

  });


  editorCanvas.addEventListener('touchmove', function(e) {

    e.preventDefault();

    if (e.touches.length === 1) {

      const deltaX = e.touches[0].clientX - lastX;

      const deltaY = e.touches[0].clientY - lastY;

      lastX = e.touches[0].clientX;

      lastY = e.touches[0].clientY;

      offsetX += deltaX;

      offsetY += deltaY;

      applyTransformations();

    } else if (e.touches.length === 2) {

      const newDistance = getDistance(e.touches[0], e.touches[1]);

      if (initialDistance) {

        const scaleChange = newDistance / initialDistance;

        scale = Math.max(0.5, Math.min(3, scale * scaleChange));

        initialDistance = newDistance;

        applyTransformations();

      }

    }

  });


  editorCanvas.addEventListener('touchend', function(e) {

    e.preventDefault();

    if (e.touches.length === 0) {

      initialDistance = null;

      applyTransformations();

    }

  });


  function getDistance(touch1, touch2) {

    const dx = touch2.clientX - touch1.clientX;

    const dy = touch2.clientY - touch1.clientY;

    return Math.sqrt(dx * dx + dy * dy);

  }


  document.addEventListener('touchmove', function(e) {

    if (imageEditorModal.style.display === 'flex') {

      e.preventDefault();

    }

  }, { passive: false });


  document.getElementById('rotateLeft').addEventListener('click', function() {

    rotation += 90;

    applyTransformations();

  });


  document.getElementById('applyChanges').addEventListener('click', function(event) {

    event.preventDefault();

    editorCanvas.toBlob(function(blob) {

      const fileInput = document.getElementById('reg_mb_img');

      const file = new File([blob], 'edited_profile.png', { type: 'image/png' });

      const dataTransfer = new DataTransfer();

      dataTransfer.items.add(file);

      fileInput.files = dataTransfer.files;


      document.getElementById('profileImage').src = editorCanvas.toDataURL();

      imageEditorModal.style.display = 'none';

      document.body.style.overflow = '';

    });

  });


// 취소 버튼 클릭 시 기본 프로필 이미지로 되돌리기

document.getElementById('cancelEdit').addEventListener('click', function(event) {

  event.preventDefault();

  

  // 모달 닫기 및 스크롤 잠금 해제

  imageEditorModal.style.display = 'none';

  document.body.style.overflow = '';


  // 파일 입력 초기화

  const fileInput = document.getElementById('reg_mb_img');

  fileInput.value = ''; // 파일 선택 초기화


  // 이전 기본 이미지 다시 설정

  const profileImage = document.getElementById('profileImage');

  profileImage.src = "<?php echo $w == 'u' && file_exists($mb_img_path) ? $mb_img_url : $config['cf_member_image_url']; ?>";


  // 상태 변수 초기화 (필요한 경우)

  offsetX = 0;

  offsetY = 0;

  scale = 1;

  rotation = 0;

});


</script>




    <script>

    $(function() {

        $("#reg_zip_find").css("display", "inline-block");


        <?php if($config['cf_cert_use'] && $config['cf_cert_ipin']) { ?>

        // 아이핀인증

        $("#win_ipin_cert").click(function(e) {

            if(!cert_confirm())

                return false;


            var url = "<?php echo G5_OKNAME_URL; ?>/ipin1.php";

            certify_win_open('kcb-ipin', url, e);

            return;

        });


        <?php } ?>

        <?php if($config['cf_cert_use'] && $config['cf_cert_hp']) { ?>

        // 휴대폰인증

        $("#win_hp_cert").click(function(e) {

            if(!cert_confirm())

                return false;


            <?php

            switch($config['cf_cert_hp']) {

                case 'kcb':

                    $cert_url = G5_OKNAME_URL.'/hpcert1.php';

                    $cert_type = 'kcb-hp';

                    break;

                case 'kcp':

                    $cert_url = G5_KCPCERT_URL.'/kcpcert_form.php';

                    $cert_type = 'kcp-hp';

                    break;

                case 'lg':

                    $cert_url = G5_LGXPAY_URL.'/AuthOnlyReq.php';

                    $cert_type = 'lg-hp';

                    break;

                default:

                    echo 'alert("기본환경설정에서 휴대폰 본인확인 설정을 해주십시오");';

                    echo 'return false;';

                    break;

            }

            ?>


            certify_win_open("<?php echo $cert_type; ?>", "<?php echo $cert_url; ?>", e);

            return;

        });

        <?php } ?>

    });


    // 인증체크

    function cert_confirm()

    {

        var val = document.fregisterform.cert_type.value;

        var type;


        switch(val) {

            case "ipin":

                type = "아이핀";

                break;

            case "hp":

                type = "휴대폰";

                break;

            default:

                return true;

        }


        if(confirm("이미 "+type+"으로 본인확인을 완료하셨습니다.\n\n이전 인증을 취소하고 다시 인증하시겠습니까?"))

            return true;

        else

            return false;

    }


    // submit 최종 폼체크

    function fregisterform_submit(f)

    {

        // 회원아이디 검사

        if (f.w.value == "") {

            var msg = reg_mb_id_check();

            if (msg) {

                alert(msg);

                f.mb_id.select();

                return false;

            }

        }


        if (f.w.value == '') {

            if (f.mb_password.value.length < 3) {

                alert('비밀번호를 3글자 이상 입력하십시오.');

                f.mb_password.focus();

                return false;

            }

        }


        if (f.mb_password.value != f.mb_password_re.value) {

            alert('비밀번호가 같지 않습니다.');

            f.mb_password_re.focus();

            return false;

        }


        if (f.mb_password.value.length > 0) {

            if (f.mb_password_re.value.length < 3) {

                alert('비밀번호를 3글자 이상 입력하십시오.');

                f.mb_password_re.focus();

                return false;

            }

        }


        // 이름 검사

        if (f.w.value=='') {

            if (f.mb_name.value.length < 1) {

                alert('이름을 입력하십시오.');

                f.mb_name.focus();

                return false;

            }

        }


        <?php if($w == '' && $config['cf_cert_use'] && $config['cf_cert_req']) { ?>

        // 본인확인 체크

        if(f.cert_no.value=="") {

            alert("회원가입을 위해서는 본인확인을 해주셔야 합니다.");

            return false;

        }

        <?php } ?>


        // 닉네임 검사

        if ((f.w.value == "") || (f.w.value == "u" && f.mb_nick.defaultValue != f.mb_nick.value)) {

            var msg = reg_mb_nick_check();

            if (msg) {

                alert(msg);

                f.reg_mb_nick.select();

                return false;

            }

        }


        // E-mail 검사

        if ((f.w.value == "") || (f.w.value == "u" && f.mb_email.defaultValue != f.mb_email.value)) {

            var msg = reg_mb_email_check();

            if (msg) {

                alert(msg);

                f.reg_mb_email.select();

                return false;

            }

        }


        <?php if (($config['cf_use_hp'] || $config['cf_cert_hp']) && $config['cf_req_hp']) {  ?>

        // 휴대폰번호 체크

        var msg = reg_mb_hp_check();

        if (msg) {

            alert(msg);

            f.reg_mb_hp.select();

            return false;

        }

        <?php } ?>


        if (typeof f.mb_img != "undefined") {

            if (f.mb_img.value) {

                if (!f.mb_img.value.toLowerCase().match(/.(gif|jpe?g|png)$/i)) {

                    alert("회원아이콘이 이미지 파일이 아닙니다.");

                    f.mb_img.focus();

                    return false;

                }

            }

        }


        if (typeof f.mb_img != "undefined") {

            if (f.mb_img.value) {

                if (!f.mb_img.value.toLowerCase().match(/.(gif|jpe?g|png)$/i)) {

                    alert("회원이미지가 이미지 파일이 아닙니다.");

                    f.mb_img.focus();

                    return false;

                }

            }

        }


        if (typeof(f.mb_recommend) != 'undefined' && f.mb_recommend.value) {

            if (f.mb_id.value == f.mb_recommend.value) {

                alert('본인을 추천할 수 없습니다.');

                f.mb_recommend.focus();

                return false;reg_mb_img

            }


            var msg = reg_mb_recommend_check();

            if (msg) {

                alert(msg);

                f.mb_recommend.select();

                return false;

            }

        }


        <?php echo chk_captcha_js(); ?>


        document.getElementById("btn_submit").disabled = "disabled";


        return true;

    }


var uploadFile = $('.filebox .uploadBtn');

uploadFile.on('change', function(){

if(window.FileReader){

var filename = $(this)[0].files[0].name;

} else {

var filename = $(this).val().split('/').pop().split('\\').pop();

}

$(this).siblings('.fileName').val(filename);

});

    </script>

</div>


<!-- 하단 바 프로필 나타나는 오류 무식하게 해결{ -->

<script>

document.addEventListener("DOMContentLoaded", function() {

    // 프로필 이미지가 포함된 부모 요소를 숨김 처리

    const profileImageContainer = document.querySelector('.fprofile_img');

    if (profileImageContainer) {

        profileImageContainer.style.display = 'none'; // 또는 'visibility: hidden;'

    }

});

</script>

<!-- 보안을 위한 개발자 도구 제한{ -->

<?php

// 개발자 도구 사용 감지

if (isset($_SERVER['HTTP_USER_AGENT']) && stripos($_SERVER['HTTP_USER_AGENT'], 'Chrome') !== false && stripos($_SERVER['HTTP_USER_AGENT'], 'Edg') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'Firefox') === false && stripos($_SERVER['HTTP_USER_AGENT'], 'Safari') === false) {

    // 개발자 도구 사용 시 오류 메시지 출력

    http_response_code(403);

    echo "개발자 도구 사용이 금지되어 있습니다.";

    exit;

}

?>

<script>

// F12 키 막기

document.addEventListener('keydown', function(event) {

  if (event.keyCode == 123) {

    event.preventDefault();

    return false;

  }

});


// 개발자 도구 열기 막기

document.addEventListener('contextmenu', function(e) {

  e.preventDefault();

});


// 개발자 도구 콘솔 막기

if (window.console) {

  console.log = function() {};

  console.error = function() {};

  console.warn = function() {};

  console.info = function() {};

  console.debug = function() {};

}

</script>

<?php

// 브라우저에서 JavaScript 사용 여부 확인

if (!isset($_SERVER['HTTP_USER_AGENT']) || !preg_match('/(?i)msie|trident|firefox|safari|opera|chrome/', $_SERVER['HTTP_USER_AGENT'])) {

    // JavaScript를 사용하지 않는 경우 리다이렉트

    header('Location: /);

    exit;

}

?>

좋아요0 이 글을 좋아요하셨습니다
url 복사 카카오톡 공유 라인 공유 페이스북 공유 트위터 공유

등록된 댓글이 없습니다.

  • _  글쓰기 글쓰기
전체 43건
게시물 검색

접속자집계

오늘
1,071
어제
1,406
최대
4,271
전체
320,384