// PHP 설정 변경 함수
function set_custom_upload_limits() {
@ini_set('upload_max_filesize', '8192M');
@ini_set('post_max_size', '8192M');
@ini_set('max_execution_time', '1200');
@ini_set('max_input_time', '1200');
}
// init 액션에 함수 연결 (우선순위 1로 설정)
add_action('init', 'set_custom_upload_limits', 1);
add_action('wp_footer', function() {
// 현재 로그인한 사용자가 관리자가 아닌 경우에만 스크립트 실행
if (!current_user_can('manage_options')) {
?>
<!-- Insert Footers START -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
jQuery(document).ready(function($) {
// 마우스 오른쪽 클릭 차단
$(document).on('contextmenu', function(e) {
e.preventDefault(); // 기본 동작 방지
});
// 마우스 드래그로 텍스트 선택 방지 (단, 입력 상자와 텍스트 영역 제외)
$(document).on('mousedown', function(e) {
if (e.target.nodeName !== "INPUT" && e.target.nodeName !== "TEXTAREA") {
e.preventDefault(); // 기본 동작 방지
}
});
// Ctrl + C, Ctrl + A 단축키 감지
$(document).on('keydown', function(e) {
if (e.ctrlKey && (e.keyCode == 67 || e.keyCode == 65)) { // Ctrl + C or Ctrl + A
// Ctrl + C를 눌렀을 때 선택한 텍스트가 있으면 출처 추가 후 복사
if (e.keyCode == 67 && window.getSelection().toString().length > 0) {
var originalText = window.getSelection().toString(); // 현재 선택된 텍스트
var appendText = ' 출처: ' + window.location.href; // 현재 페이지 URL을 출처로 추가
var newCopyText = originalText + appendText; // 원본 텍스트에 출처 추가
navigator.clipboard.writeText(newCopyText); // 클립보드에 새 텍스트 저장
e.preventDefault(); // 기본 복사 동작 방지
// Ctrl + A를 눌렀을 때 텍스트 선택 방지
} else if (e.keyCode == 65) {
e.preventDefault(); // 기본 동작 방지
}
}
});
});
</script>
<!-- Insert Footers END -->
<?php
}
});
이러한 기능을 WordPress에 구현하려면 WordPress 플러그인을 만들거나 WordPress 테마 기능.php 파일에 코드를 추가할 수 있습니다.
아래는 WordPress의 functions.php 파일에 추가할 수 있는 간단한 코드의 예입니다. 이 코드는 사용자의 IP 주소와 액세스 시간을 세션에 저장하고, 동일한 페이지나 파일에 1분에 10번 이상 액세스하는 사용자의 IP 주소를 차단합니다.
function check_and_block_repeated_requests() {
session_start();
$user_ip = $_SERVER['REMOTE_ADDR'];
$current_page = $_SERVER['REQUEST_URI'];
$key = $user_ip . '_' . $current_page;
if (!isset($_SESSION[$key])) {
$_SESSION[$key] = array('timestamp' => time(), 'count' => 0);
}
// Check if user has accessed the page within the last 60 seconds
if (time() - $_SESSION[$key]['timestamp'] < 60) {
$_SESSION[$key]['count'] += 1;
} else {
$_SESSION[$key] = array('timestamp' => time(), 'count' => 0);
}
// If user accessed the page more than 10 times in the last 60 seconds, block them
if ($_SESSION[$key]['count'] > 10) {
die('You have been temporarily blocked due to excessive requests.');
}
}
add_action('init', 'check_and_block_repeated_requests');
현재 WordPress에서 활성화된 function.php 파일에 이 코드를 추가할 수 있습니다.
참고:
이 코드는 세션을 사용하여 사용자 액세스 수를 추적합니다. 일부 WordPress 환경에서는 세션 설정이 필요할 수 있습니다. 위 코드는 예제일 뿐이며 프로덕션 배포를 위해 테스트 및 검증이 필요합니다. 이러한 기능은 웹 서버, CDN 또는 WAF 수준에서도 구현할 수 있으며 보다 효과적입니다.
블로그를 하는 분들에게 블로그지수 개념을 조금이라도 도와드리기 위한 [ 티온스테이션 ] sta.tion.co.kr 워드프레스 블로그와 개인 서버 구축에 관련된 정보를 일기처럼 기록하고 있는 지금 이 워드프레스 [ 리눅스맨 ] vlog.tion.co.kr 등 그 이외 몇개 더 만들어서 관리를 하고 있습니다.
이렇게 도메인만 보더라도 [ 티온 ] 에서 운영하는 워드프레스 블로그라는 사실을 알 수 있습니다.
그런데 이렇게 자신이 원하는 도메인을 쉽게 구입 할 수 없다는 것이 함정입니다.
후이즈 도메인 대행 업체를 통하여 확인해보니 kr, co.kr, com, net, it, ai, io 등 인기있는 도메인은 모두 등록불가 상태입니다.
그렇다고 포기하시지마세요. 도메인이 위에 보이는 전부가 아니기 때문입니다.
더 많은 도메인을 검색해보면 등록 가능한 다양한 도메인을 찾을 수 있습니다.
수 백개가 넘는 최상위 도메인 중에서 내가 활동하고 있는 영역과 잘 어울릴만한 도메인을 찾는것이죠.
티온커뮤니티 사이트를 운영해보고 싶다면 tion.community 도메인을 확보하여 www.tion.community 이렇게 만들면됩니다.
티온파트너스 사이트를 만들려면 tion.partners 도메인을 구입하여 그에 맞게 브랜딩을 할 수 있죠.
제가 프로그래머이기도 하니 프로그램 툴을 제작해서 판매, 배포 하기 위해 티온 툴 사이트도 만들 수 있겠죠.
www.tion.tools 이렇게 워드프레스 블로그를 이용하여 브랜딩을 한다면 또 새로운 브랜드가 만들어지는 것이죠.
이렇게 인터넷에서 브랜딩은 정말 무궁무진하고 생각하면 할수록 너무 설레입니다.
지금은 제가 [ 티온 ] 제 회사명을 바탕으로 이렇게 검색을 했잖아요.
만약 내가 더 규모있게 전세계를 대상으로 도메인 대행 사업을 하고 싶다면? 어떤 도메인을 확보하면 될까요?
domain 을 검색해보겠습니다.
역시 제가 생각한것처럼 최상위 유명한 도메인은 누군가가 이미 확보하여 사용하고 있습니다.
와우 이 분야는 정말 글로벌 스럽네요.
정말 별로 안 유명한 최상위 도메인까지 전세계 사람들이 싹 쓸어갔네요.
도메인 프로텍션? 도메인을 보호한다…
조금 거리가 있기는 하지만 암튼 구입할 수 있는 도메인입니다.
아래에 보니깐 테니스 관련 업종에 계신 대표님이라면 나름 괜찮은 도메인 같습니다.
domain.tennis 이 테니스가 그 운동의 테니스 맞죠? ㅎㅎ
이 도메인을 어떻게 활용할 수 있냐면요.
my.domain.tennis [ 내 도메인 테니스 ] 이렇게 개인적으로 운영도 가능하지만 저는 글로벌하게 테니스 협회를 국제적으로 연결 하여 사용 한다면 나라별로 도메인을 만들어서 활용 할 수 있습니다.
보여지는 웹사이트로 운영하여도 되며 인트라넷 등 DNS 서버로 활용하기도 좋은 도메인 이름입니다.
후이즈로 등록을 하게 된다면 1년에 8만8천원 비용으로 위 도메인을 사용 할 수 있습니다.
만약 AWS ROUTE 53 서비스를 이용할 경우 $47에 1년 이용이 가능합니다.
그렇게 큰 차이는 아니지만 환율 1500원으로 잡을 경우 대략 7만원정도이니 AWS ROUTE 53 서비스에서 구입할 경우 20%정도 더 저렴하게 구입을 할 수 있습니다.
도메인 구매로 끝나는것이 아니라 워드프레스 홈페이지를 운영하기 위해서는 호스팅이 필요하며 호스팅과 함께 보안서버 인증서까지 확보하여야 합니다.
대략적으로 기본 모델을 구입했다고 가정해보고 산출 해보도록 하겠습니다.
보안서버 SSL 적용 할 경우 후이즈에서는 1년에 4만8천원이 추가 비용이 나오게됩니다.
그리고 워드프레스 호스팅을 위한 스탠다드 ( 파일용량 3기가 ~ 5기가 ) 이용할 경우 한달에 2만원~3만원 정도 지출됩니다.
제가 워드프레스 블로그를 다수 운영해봐서 잘 알고 있습니다.
파일 용량 생각 하지 않고 그냥 막 사용하면 10G 생각보다 금방 사용됩니다.
파일 크기를 줄이기 위해서 이미지(사진) 용량을 줄이는 프로그램을 사용해야지만 이러한 부분들로부터 해방되죠.
아무튼 지금 보고 계신 이 워드프레스 블로그 [ 리눅스맨 ]의 용량은 대략 2G 정도 사용하고 있습니다.
글 갯수는 300개 조금 넘는 수준이 2GB 라고 생각하면 됩니다.
이렇게 따지면 2년 정도 지나서부터는 스탠다드 상품에서 한단계 위의 상품을 구입하여 사용해야 한다는 결론이 나오죠.
만약에 클라우드 기반의 서버호스팅이라면 용량 늘리는 것은 문제가 전혀 안됩니다
하지만 카페2*** 라던지 클라우드 기반이 아닌 업체를 이용할 경우 서버 이전을 해야하는 대형 이슈가 생겨버리죠.
이전을 할 경우 또 30만원 ~ 100만원 이상의 서버 이전비용이 발생할 수 있습니다.
이런거를 다 따지면 처음부터 프리미엄 월 7만원씩 지불하고 용량이 많은 서버를 호스팅하여 사용하기도 합니다.
대략 10년을 운영한다고 가정하고 용량이 매해 1GB씩 늘어난다고 했을때 결국 파일용량은 10GB를 넘어가게 됩니다.
10년치를 산출 하면 이렇습니다.
호스팅비용: 5,856,000원
보안서버 SSL 인증서 비용: 384,000원
도메인비용: 704,000원
합계: 6,944,000원 (10년 운영비용)
대략 700만원 정도 비용이 지출됩니다.
만약? 위의 금액에서 절반이상을 줄일 수 있다면? 330만원에 파일 용량도 10배 더 사용할 수 있고 더 좋은 사양으로 10년을 사용할 수 있다면 여러분들은 저에게 의뢰할 의향이 있으신가요? 게다가 매년마다 직접 도메인, 보안서버, 호스팅을 관리해드립니다.
호스팅 서버의 파일용량 100GB 를 제공해드릴 수 있으며 같은 조건으로 AWS ROUTE 53 으로 domain.tennis 도메인을 10년 결제 해드리겠습니다. 이걸로 끝나는게 아니라 DNS 서버도 제가 직접 관리를 해드릴꺼며 만약 개별 DNS서버를 운영하고 싶으시다면 추가 금액 220만원으로 AWS EC2 DNS인스턴스 서버를 10년 이용 하실 수 있도록 세팅을 해드릴 수 있습니다.
파일 용량 때문에 걱정하는 일은 없으실겁니다.
더 많은 용량이 필요하여 1TB 이상의 개인 서버를 운영해야한다면 그 부분은 저와 따로 협의하여 서버를 운영 할 수 있습니다.
브랜딩 도메인, 워드프레스 호스팅, 보안서버 신청은 스마트폰에서 아래 문자보내기를 클릭하여 신청할 수 있습니다.
#php 페이지 하나 만들어서 아래처럼 사용하면 DB를 호출 할 수 있습니다.
require_once('wp-load.php');
$table_name = $wpdb->prefix.'테이블이름';
$format = array($컬럼명1, $컬럼명2, $컬럼명3);
$wpdb->query($wpdb->prepare(
"UPDATE {$table_name} SET 컬럼명1='%s' WHERE 컬럼명2='%s' AND 컬럼명3='%s';
", $format ));
tion_common_code-snippets.json 죄송합니다. 이 파일 타입 업로드할 권한이 없습니다.
tion_common_code-snippets.json 죄송합니다. 이 파일 타입 업로드할 권한이 없습니다.
워드프레스 업로드 제한 에러 메시지를 가끔 보게됩니다.
허용되지 않은 파일을 업로드 할 때 나오는 메시지인데요.
이번에 json 파일을 업로드 해서 시스템을 빠르게 구축할때 도움이 되도록 파일을 업로드하려하는데 제한이더군요.
이를 해결하기 위해서 몇가지 방법이 존재합니다.
웹검색을 해보면 한국 블로거들은 대부분 플러그인을 사용하라고 글을 작성해놓았더군요.
외국 블로거들도 대부분 플러그인 이야기를 꺼내지만 간혹 프로그래머들이 있는지 add_filter를 이용한 function.php 파일에 업로드 하는방법을 소개했더군요. 그나마 외국은 이렇게 개발자들이 많아서 조금이라도 더 구체적인 방법을 찾을 수 있어서 좋습니다. 그렇다고 한국 블로거님들이 잘못되었다는건 아니고요. 한국에서도 많은 개발자들 이러한 직접 코딩을 쉽게 할 수 있도록 많이 알려주셨으면 좋겠다 싶어서 잠깐 적어보았습니다.
add_filter 를 이용하여 upload mimes type을 교체 할수도 있습니다.
물론 unset 명령어로 제거할수도 있고 추가할 수도 있습니다.
제가 플러그인을 자꾸 설치하는것에 대해서 별로 안좋아하는 이유는 보안의 이유입니다.
플러그인이 많으면 많을수록 보안에 취약해 질 수 밖에 없습니다.
플러그인이 1개 완벽한것을 설치했다면 그 플러그인 이외에 플러그인이 없어서 보안상 더 유리하다는 이야기입니다.
여러개면 개발자가 여러명이 될테고 헛점이 더 많아진다는 그러한 원리입니다.
결국 플러그인은 최대한 줄여야하는데 이러한 사소한 upload 마임 설정을 변경하기 위해서까지 플러그인을 사용하자하니 제가 직접 플러그인을 만들어서 배포를 한들 다른이들도 저처럼 또 똑같이 플러그인에 대한 반감이 있을 수 있습니다.
그래서 snippets 플러그인 하나만 설치하고 나머지는 필터와 액션을 이용해서 대부분을 해결하고 있는중입니다.
오늘 내용도 snippets 플러그인 하나만 설치해놓고 다른 기능을 변경하고 추가하는 내용입니다.
보시면 json 파일이 업로드가 이미 된 상태라 올려놓은 파일을 확인 할 수 있습니다.
파일유형을 자세히 보세요.
application/json 이라고 나와있죠?
이 항목이 가장 중요합니다.
add_filter 명령어로 mime 타입을 넣을때 json 파일을 text 항목으로 넣으라고 인터넷검색에 나온거보고 아무리 해도 안되어서 계속 검색검색 하다 댓글하나 찾았는데 거기에 파일형식을 application/json 바꾸면 된다는것을 확인하고 업로드까지 되는거 확인했습니다.
이렇게 인터넷도 버전이 달라지거나 시간이 흐르거나 혹은 사용자의 실수로 잘못된 정보를 제공할수도 있습니다.
그런 정보를 진짜인마냥 전달하고 글을 작성하고 복사하고 결국 잘못된 정보가 사람들 사이에 퍼지게되는거죠.
바로 잡기 위해서 이 글을 작성하는겁니다.
플러그인은 아래 링크를 클릭해서 다운받으시면되고요.
또 잘 모르는분들이 그럴겁니다.
결국 플러그인 다운받는거 아니냐!! 라고요 ㅎㅎㅎ
무식한 소리하지마시고요. (왠만하면 제가 이런말 안하지만 진짜 자신이 무식한거 생각안하고 자신의 생각대로 상대를 생각하는사람들이 많더군요.) 자신은 그기능의 원리도 모르면서 그냥 복사 붙여넣기해서 다른사람 피해를 주는 사람들이 생각보다 인터넷 상에 많다는 사실을 잊지마세요. 그런 사람들 가운데 내가 없길 바랄뿐입니다.
오늘 이 내용은 상당히 중요한 내용이며 고수중에서도 초고수들만 이용하는 방법입니다.
초보분들은 다양한 플러그인을 많이 설치하여 보안상 취약해지고 서버에 무리를 많이 줍니다.
그러니 이 방법을 잘 활용하셔서 도움되셨으면하네요.
스니펫 플러그인은 다른 플러그인과 다르게 add_filter와 add_action 명령어를 직접 만들어서 웹상에서 등록 변경 할 수 있도록 해주는 CMS 같은 역할의 플러그인입니다.
다른 플러그인들은 각 기긍별로 딱 정해진 일만 하지만 스니펫 플러그인은 내가 원하는 코드를 직접 만들고 변형, 변조 할 수 있죠. 그렇기 때문에 다른플러그인은 설치 안하더라도 이 플러그인 하나만 설치하면 모든 플러그인 기능을 직접 만들 수 있다고 해도 과언이 아닙니다.
우선 [ Code Snippets ] 라는 코드조각 플러그인을 설치해야합니다.
그리고 Add New 버튼을 클릭하여 아래처럼 해주세요.
코드는 제가 아랫쪽에 코드만 따로 넣어두었습니다.
[coupang]
my_upload_mimies 함수를 필터를 이용하여 등록해주는겁니다.
어렵다 생각하지마시고 내가 원하는 파일확장자만 수정해서 사용하면됩니다.
폰트파일을 업로드 하고 싶다면 마임항목에 [ fft ] 그리고 파일형식항목에 [ font/ttf ] 이렇게 입력하면됩니다.