Dev Blog

스크립트 & 소스코드 공유

실무에서 유용하게 쓰는 스크립트와 코드 조각을 블로그 게시판으로 저장하고 공유합니다.

108건의 글

현재 페이지 URL을 클릭 한 번으로 복사하는 방법 (JavaScript)

버튼 클릭 한 번으로 현재 페이지 URL을 클립보드에 복사하는 JavaScript 방법이다. a 태그의 onclick으로 함수를 호출하고, 함수 안에서 임시 textarea 요소를 만들어 현재 주소(location.href)를 넣은 뒤 document.execCommand("copy")로 복사하고 textarea를 제거한 다음 알림창을 띄운다. 전체 HTML·JS 코드를 단계별로 설명한다.

HTML에서 버튼 생성과 스크립트에서 코드 몇줄이면 간단히 만들 수 있습니다.

HTML

a태그를 통해 onclick으로 함수를 호출합니다.

저는 URL주소복사란 이름의 버튼을 A태그를 통해 만들 예정입니다.

<span class="button gray medium"><a href="#" onclick="clip(); return false;">URL주소복사</a></span>

JAVASCRIPT

a태그에서 호출한 함수인 clip을 작성해줍니다.

url을 변수로 만들고

textarea라는 변수에 textarea의 요소를 생성해줍니다.

이 것을 body의 가장 아래, 즉 </body> 바로 위에 textarea를 추가해줍니다.

(임시 공간이기 때문에 위치는 상관이 없습니다.)

url에는 현재 주소값을 넣어줍니다.

textarea 값에 url를 넣어주고,

textarea를 설정합니다.

그리고 document.execCommand("copy"); 메서드를 사용하면 복사가 됩니다.

그리고 마지막으로 textarea 요소를 없애주고,

복사되었다는 알림창을 띄우면 끝입니다.

<script type="text/javascript">
function clip(){
var url = "<?php echo $_SERVER['SERVER_NAME']?>";
var textarea = document.createElement("textarea");
document.body.appendChild(textarea);
url = window.document.location.href;
textarea.value = url;
textarea.select();
document.execCommand("copy");
document.body.removeChild(textarea);
alert("URL이 복사되었습니다.")
}
</script>

PHP 함수 정의 위치(파일·줄 번호) 찾기 - ReflectionFunction

PHP에서 특정 함수가 어떤 파일의 몇 번째 줄에 정의되어 있는지 확인하는 방법이다. ReflectionFunction 클래스로 함수 정보를 생성한 뒤 getFileName()과 getStartLine()을 호출해 함수의 정의 위치를 출력하는 예제를 보여준다. 내장 함수의 소스를 찾을 때 유용하다.

$details = new ReflectionFunction('alert');
print $details->getFileName() . ':' . $details->getStartLine();

Cloudflare로 무료 HTTPS(SSL) 인증서 설정하는 방법

Cloudflare를 이용해 무료로 HTTPS(SSL) 서비스를 적용하는 과정을 스크린샷과 함께 단계별로 정리한 글이다. 사이트 추가, 도메인 입력, DNS 조회, 무료 요금제 선택, 도메인 구입처(카페24·가비아 등)에서 네임서버 변경, DNS 전파 대기 후 SSL 적용 확인까지 초보자도 따라 할 수 있도록 설명한다.

무료로 HTTPS 서비스!!!

됩띠다~

할 수 있습띠다! 하하..^^

기술 레벨에 따라 여러 가지 방법이 있었는데요.

저는 cloudflare 쪽 서비스를 이용해서 HTTPS 서비스를 구현해 봤습니다.

https://www.cloudflare.com/ko-kr/

가입하시고 로그인하세요.

01 사이트 추가

HTTPS 무료로 적용하고자 하는 도메인을 추가하는 단계입니다.

Add a Site 클릭하세요.

02 도메인 입력

www 빼고 도메인 입력하세요.

03 도메인 DNS 조회

도메인의 이전 기록을 조회해서 가지고 오는 단계라고 보시면 되겠습니다.

그냥 Next

04 Free 무료 SSL 지원 서비스 선택

유료가 필요한 단계가 나중에 올 수도 있지만 일단 무료로 선택하세요.

나중에 정말 필요하면 전환하시구요.

05 DNS 조회 결과 확인

이전에 서비스 받던 기록들을 그대로 가지고 왔네요.

확인해 보시고 다음 단계로 가시죠.

06 DNS 연결 정보 확인

이전 페이지 하단 부분입니다.

Continue 클릭

07 네임서버 변경 안내

여기서부터는 약간 어려워집니다.

(웹 개발을 하시던 분이라면 큰 문제가 없겠네요.)

하나씩 공부하면서 따라갈 수도 있겠지만 일단 다음으로 가 볼게요.

도메인을 구매한 곳을 알아야 합니다.

카페24, 가비아, 후이즈, 아이네임즈, 닷네임...

너무 많죠?

도메인을 구입했던 홈페이지에 로그인하세요.

그리고는 이제 네임서버 설정을 바꿔야 합니다.

08 네임서버 변경

저는 dotname이라는 곳에서 도메인을 구매했는데요.

메뉴 중에 DNS 설정 > 네임서버 변경이라는 곳으로 이동했습니다.

(으.... 표시를 잘못했네요. 바로 아래 네임서버 변경 항목에 빨간 테두리~~)

09 네임서버 변경 전

네임서버를 바꾸기 전입니다.

카페24라고 보이네요.

그 위에 있는 1차, 2차 두 군데를 바꿀 겁니다.

10 네임서버 변경

자 이제 바꿔 보겠습니다.

아까 cloudflare에서 알려준 네임서버 정보를 입력합니다.

변경하면 네임서버 설정이 끝났습니다.

여기까지 하고 나서 커피 한잔하고 와야 됩니다.

하하...왜냐구요?

네트워크 전파 속도라는 게 있으니까요.

네임서버를 변경하면 바로 적용이 안 됩니다.

전 세계에 퍼져있는 DNS가 서로 통신해서 정보를 교환할 때까지 기다려 주는 겁니다.

몇 분 내지는 몇 시간의 시간이 필요합니다. 최대 24시간!!

공식적으로 그렇다는 말이구요.

몇 분이면 되긴 할 겁니다. (약간 불안정하긴 할 거예요.)

11 DNS 정보 미확인

cloudflare 입장에서 DNS 정보가 아직 확인이 안 된다는 말입니다.

상기 메시지가 나오면 좀 기다리면서 계속 새로 고침을 해야 됩니다.

그 사이 우리 도메인 주소를 치고 홈페이지에 접속 함해 볼까요?

12 보안 연결(HTTPS) 미적용

당연히 아직은 아닙니다.

HTTPS 적용이 안 된 거예요.

제대로 SSL 서비스 적용하면 달라질 겁니다.

일단 확인만 했습니다.

자..

커피 한 잔 드셨고...

몇 분 정도 지나면 아래처럼 바뀝니다.

13 네임서버 연결 완료

Great news!

멘트가 약간 간지럽습니다. 하하^^

전 세계 DNS 서버들까지 순식간에 전파를 해서 정보를 공유했습니다.

이제 cloudflare 쪽에서 DNS 서비스를 받을 수 있게 되었다는 말입니다.

감사한 일이죠.

홈페이지에 접속해 보세요.

다 된 걸까요?

14 왜?

몇 단계 더 추가 작업이 남아 있습니다.

15 페이지 규칙 추가

Page Rules?

홈페이지 접속하면 그 다음은 어떤 규칙을 적용할까?

정도로 이해하면 될 거 같습니다.

이 규칙 설정을 해야 HTTPS 적용이 제대로 되죠.

규칙을 2개 추가하겠습니다.

16 www.domain 접속 규칙

사용자들이 HTTPS(SSL 인증서) 없는 접속을 하면 우리는 HTTPS 보안 인증 접속이 되게 규칙을 설정합니다.

위 설정처럼 하시면 됩니다.

위 입력 항목에 http://www.domain.kr처럼 HTTPS 없이 들어올 때 우리는 바로 아래 설정에서

자동으로 HTTPS 설정으로 넘겨주세요

라고 설정하는 겁니다.

17 www 없는 접속 규칙

사람들이 http://www.websiteman.kr 이렇게만 접속하면 좋은데 www 없이 접속할 때도 있습니다.

그럴 때 규칙을 또 추가합니다.

위 항목 박스에 www 없이 도메인을 입력합니다.

자 이렇게 두 가지 규칙을 추가했습니다.

18 규칙 2가지 추가된 화면

두 가지 규칙이 추가된 화면입니다.

자, 이제 거의 마무리 단계입니다.

홈페이지 접속을 해 봅니다.

음..............

바로 HTTPS 인증 적용이 되어서 보일 수도 있구요.

아닐 수도 있습니다.

DNS 설정이 바뀌면 바로바로 확인이 안 됩니다.

전파되는 시간들이 있기 때문이죠.

커피를 또 한잔 더 하고 오셔야 합니다.

이번에는 커피 말고 물이나 차를 한잔 드시고 오시죠.

계속 새로 고침해 보세요.

드디어....

19 HTTPS 인증 적용

인증서 보이시죠?

클릭하고 상세 내용을 보세요.

20 CloudFlare 인증서

인증기관도 명확하고 유효기간도 1년이네요.

그런데 1년 지나면 또 이 짓(?)을 해야 할까요?

저도 기다려 보는 중입니다.^^

검색을 좀 해 보니 자동 연장이라고 나와 있긴 한데요.

그때 가서 확인해 볼 일입니다.

21 익스플로어 SSL 인증서

익스플로어에서는 HTTPS 보안인증서 위치가 좀 달라요.

브라우저마다 조금씩 다르게 나타날 겁니다.

PHP 숫자 앞자리 0 채우기 - str_pad와 sprintf 두 가지 방법

PHP에서 숫자 앞에 0을 채우는 두 가지 방법을 소개한다. str_pad는 원하는 문자로 문자열을 왼쪽(STR_PAD_LEFT)·오른쪽·양쪽에 채울 수 있고, sprintf는 %02d 형식 지정자로 왼쪽에 0을 채우거나 소수점 이하 자릿수를 보정하는 데 유용하다. 두 함수의 특징과 사용 예제를 비교해 정리했다.

顾名思义这个函数是针对字符串来说的这个可以对指定的字符串填补任何其它的字符串

例如:str_pad(带填补的字符串,填补后的长度,填补字符串,填补位置)

其中填补后的长度必须是个正整数,填补位置有三个选项,

左边:STR_PAD_LEFT

右边:STR_PAD_RIGHT

两端:STR_PAD_BOTH

echo str_pad(1,8,"0",STR_PAD_LEFT);
//结果:00000001

echo str_pad(1,8,"0",STR_PAD_RIGHT);
//结果:10000000

echo str_pad(1,8,"0",STR_PAD_BOTH);
//结果:00010000

在上边的例子中值得注意的一个细节是,如果填补的位数是个奇数,例如例三中填补了7个0,右边优先。

再看补零的另外一种方法sprintf

这个函数学过c的都十分了解它,呵呵……

不过咱不说这么多,因为用起来实在太灵活了,以至于我基本不会用,不过在左边补零(或者在小数点后补零)用起来还是很方便的

先看左边补零

echo sprintf("%05d",1);
//先说%05d的意思,用一个5位数的数字格式化后边的参数,如果不足5位就补零
//运行结果是00005

再看小数点后补零

echo sprintf("%01.3f",1);
//%01.3f的意思是说,用一个小数点后最少三位不足三位补零,小数点前最少一位,不足一位补零的浮点数格式化后边的参数
//其运行结果是:1.000

关于补零的这两种方法大家可以挑选着使用,其实各有优劣,sprintf能够保证你不至于误操作吧1补成1000000哈哈,str_pad可以保证你想补啥补啥。

도메인 차단·이전 시 301 리다이렉트로 강제 이동시키기

도메인이 차단되거나 새 주소로 이전할 때 301 리다이렉트로 방문자를 강제로 이동시키는 방법이다. PHP의 header() 함수, ASP와 ASP.NET, CGI Perl, JSP 코드, Apache .htaccess의 mod_rewrite 규칙, 그리고 IIS의 영구 리다이렉트 설정까지 서버별 구현 방법을 모두 정리했다.

域名跳转可以使用301跳转。301跳转多用于旧网址在废弃前转向新网址以保证用户的访问,在诸多服务器中,均支持本跳转方法。

301跳转共有两种方法:

1、服务器设置法:本设置方法因服务器软件版本较多,且设置繁琐,不推荐使用。

2、页面跳转方法,本方法在浏览器中执行,大多数浏览器均支持本301跳转页面,所以使用较为广泛。

详细方法:

1、IIS下301设置:

Internet信息服务管理器 -> 虚拟目录 -> 重定向到URL,输入需要转向的目标URL,并选择“资源的永久重定向”。

2、PHP转向版本,请使用以下代码:

header("HTTP/1.1 301 Moved Permanently");

header("Location: http://你的网址/");

exit();

3、ASP转向版本,请使用以下代码:

Response.Status="301 Moved Permanently"

Response.AddHeader "Location","http://你的网址/"

Response.End

4、ASP.net转向版本,请使用以下代码:

<script runat=”server”>

private void Page_Load(object sender, System.EventArgs e)

{

Response.Status = “301 Moved Permanently”;

Response.AddHeader(”Location”,”http://www.ahwebs.com/articles/301/“);;)

}

</script>

5、CGI Perl下的301转向,请使用以下代码:

$q = new CGI;

print $q->redirect(”http://www.new-url.com/”);;)

6、JSP转向版本,请使用以下代码:

<%

response.setStatus(301);

response.setHeader( “Location”, “http://www.ahwebs.com/” );

response.setHeader( “Connection”, “close” );

%>

7、Apache下301转向,请使用以下方法:

新建.htaccess文件,输入下列内容(需要开启mod_rewrite):

1)将不带WWW的域名转向到带WWW的域名下

Options +FollowSymLinks

RewriteEngine on

RewriteCond %{HTTP_HOST} ^lesishu.cn [NC]

RewriteRule ^(.*)$ http://www.ahwebs.com/$1 [L,R=301]

2)重定向到新域名

Options +FollowSymLinks

RewriteEngine on

RewriteRule ^(.*)$ http://www.ahwebs.com/$1 [L,R=301]

3)使用正则进行301转向,实现伪静态

Options +FollowSymLinks

RewriteEngine on

RewriteRule ^news-(.+).html$ news.php?id=$1

将news.php?id=123这样的地址转向到news-123.html



Let's create something great together.

프로젝트 문의 및 견적 요청은 언제든 환영합니다.