웹 소켓 서버(Websocket) - Ratchet 웹 소켓 서버에서 접속자를 제어
웹>PHP 일반
Ratchet 웹 소켓 서버를 실행하면 소켓의 정보만 있다면 로컬에서만 접속가능한 환경이 아닐 경우 TCP URI 정보만 있다면 누구든 클라이언트에서 웹 소켓을 연결하여 접속을 할 수 있게된다. 우리는 이를 사전에 막아 보안강화를 할 필요가 있다. 기본적으로 포트를 막는 방법엔 아래와 같이 두가지 방법이 있다. 1. iptables 를이용하는 방법이 가장 ···
웹 소켓 서버(Websocket) - Ratchet 라이브러리의 보안 프로토콜(wss) 소켓 생성방법
웹>PHP 일반
웹 소켓은 ws 와 wss 프로토콜 방식을 제공하는데 이는 일반적인 URI의 HTTP 와 HTTPS와 같이 일반전송과 암호화전송 정도로 이해하면 된다. ws 프로토콜을 이용할경우 일반적인 원문으로 전송이 되기 때문에 중요 데이터를 공격자는 그대로 볼 수 있다. 이는 DB로 본다면 비밀번호 칼럼을 그대로 원문으로 처리한것과 동일하다. 이럴경우 DB가 노출되면···
웹 소켓 서버(Websocket) - 자바스크립트 Websocket 이용한 간단한 채팅 프로그램 예제
웹>PHP 일반
자바스크립트에서 공식적으로 제공되는 Websocket 객체는 클라이언트 와 서버 간 데이터를 주고 받을 수 있도록 연결 스트림을 만들어 주는 기술로 일반 소켓통신은 서버간 통신였다면 웹 소켓은 클라이언트 to 서버간 통신으로 볼 수 있다. 그렇다고 해서 클라이언트만 이용가능한건 아니며 서버간 통신도 가능하지만 서버간 통신이라면 굳이 복잡한 웹 소켓을 보단 ···
웹 소켓 서버(Websocket) - PHP Ratchet 라이브러리 설치 및 실행
웹>PHP 일반
PHP를 통해 웹 소켓을 하기 위해선 소켓 서버가 있어야한다. 당연하게도 우리는 웹 소켓 프로그램을 만들기엔 오랜시간이 걸리고 어쩌면 영영 못만들 수 있다. 그래서 제공되는 라이브러리를 사용해야 하며 라이브러리는 Composer를 통해 쉽게 관리할 수 있다. 우선 들어가기 앞서 Composer 설치가 안되어 있을 경우 진행할 수 없으니 사전에 Compose···
PHP8 도입은 언제쯤이 좋을까?
웹>PHP 일반
PHP와 함께 해온지 벌써 10년이 다되가는것같다. 내가 처음 사용한 버전은 PHP5 버전대였는데 영원할것같던 5도 이제 역사속으로 사라지고 PHP7로 갈아탄지가 엊그제 같은데 부지런하고 똑똑한 PHP 연구원들덕에 빠르게 사라질 듯 싶다. 솔직히 PHP8은 작년에 개발서버에 설치만 해놓고 언젠간 해야지라는 믿을 수 없는 결심만 하고 지금껏 모른척 했지만 회···
PHP를 이용하여 문장의 앞뒤로 자르고 접두사 붙이기 (mb_substr_after / mb_substr_before)
웹>PHP 일반
주로 컨텐츠 관련된 작업을 하다보면 글이 길경우 잘라야 하는 경우가 있다. 보통 문장의 뒷부분을 자르고 접두사(...)를 붙이는 경우가 많다. 다만 요즘은 반응형으로 사이트를 많이 제작하다보니 PC기준으로 최대한 글자수를 자르고 CSS로 말줄임 처리를 하는 경우가 많다. 이번편에서는 간단하게나마 PHP를 이용하여 문장의 뒷부분 또는 앞부분 자르는 함수에 대···
PHP의 mb_strlen 결과와 javascript의 length 결과값이 다를때 대처
웹>PHP 일반
지금까지 개발하면서 mb_strlen 과 Javascript의 길이가 다를 수 있다는걸 인지하지 못하였다. 아무래도 서버단에서만 체크하다보니 디테일한 부분은 인지를 못했던것같다. 보통 우리가 javascript로 글자수를 판별할 시에는 아래와 같이 `변수.length`와 같이 판별을 할것이다. <script> var a = "한글 입니다."; a···
PHP 의 exec 함수로 결과값(output) 받을시 전체 결과값이 안나올경우 처리방법
웹>PHP 일반
PHP에서 exec 함수의 경우 쉘 명령어(shell)를 수행할 수 있도록 도와주는 함수이며 그만큼 사용시에 보안에 신경 써야한다. 대부분 가공된 데이터를 기준 한정된 코드로 가공하여 많이 사용하게 되는데 특정 명령어를 사용할때 출력되는 내용이 전체가 아닌 마지막 부분만 노출되는 경우가 있다. 분명 쉘(shell)에서 입력할때는 정상 출력 되지만 PHP e···
PHP를 이용하여 HTML 소스 치환과 번역 기술에 사용되는 언어팩의 기본원리를 알아보자
웹>PHP 일반
치환이란 어떠한 것을 다른 무언가로 교체하는 것을 의미한다. 언뜻 보면 바꾸는 것과 비슷해 보이나 치환은 바꾼다는 뜻보단 대체로서의 의미가 맞는 말이다. 웹 프로그래밍의 경우 HTML 소스와 함께 병행하여 쓰다보니 소스가 상당히 보기 불편해 지는 경우가 많다. 이럴때 사용할 수 있는게 치환자인데 이는 비공개 소스에 대한 유저용 치환자를 제공해 주는 템플릿 ···
PHP의 예외처리 try/catch/finally 의 기본 사용방법
웹>PHP 일반
PHP에서 예외처리를 할 수 있는 try ~ catch 라는 제어문은 try 블록 내에 소스코드 내에 작성하고 예외처리가 있을 경우 catch 블록으로 보내서 처리를 할 수 있게 만들어 준다. finally는 가장 마지막에 실행되는 처리문으로 보면되고 실제 복잡하게 사용한다면 내용만 길어지고 어려울 수 있으니 이번편에서는 예외 프로그램 처리 시 간단한 활용···
PHP를 이용하여 간단한 사이트맵(sitemap) 을 만들어 보자
웹>PHP 일반
사이트맵은 검색 엔진은 꼭 필요한 사항은 아니지만 그래도 대부분의 검색 엔진 로봇들이 사이트에 담긴 페이지 링크 구조 파악을 위해 사이트맵을 참고하기 때문에 만들어서 넣어두는게 좋다. 사이트맵은 간단하게 보면 사이트에 포함된 링크 연결 관계도를 작성하는건데 유형에 따라 조금 더 복잡할 수 있다. 이번에 소개하는 사이트맵은 기본적인 블로그에서 사용되는 형태이···
PHP의 mcrypt 를 openssl로 대체 (nhnapi-simplecryptlib.php 수정)
웹>PHP 일반
간만에 네이버페이 주문형 결제연동하다가 서버에 mcrypt 함수가 지원이 안되어 모듈 실행시 오류가 발생하는 문제가 생겼다. 해당 서버의 PHP 버전은 7.4 였는데 당장 서버에서 지원이 안되는 관계로 조금 난감하게 되었다. PHP 공식 포럼에는 해당 함수가 7.1 부터 배제되었고 7.2부터는 제거 되었으니 해당 함수에 의존하지 말라고 명시가 되어있었다. ···
PHP의 JSON을 이용한 자바스크립트 변수 활용법
웹>PHP 일반
JSON은 오브젝트 데이터의 직렬화 데이터 기법으로 프로그램에서는 공통 언어로 많이 사용된다. 이는 프로그램 언어가 서로 달라도 하나로 통일하여 소통이 가능하도록 연결해주는 역활을 한다. PHP에서는 배열을 이용하여 json_encode() 함수를 이용한 변환 방식을 주로 사용하는데 이와 함께 많이 쓰이는 serialize() 함수도 있다. serializ···
PHP로 예외처리 후 이동된 페이지에서 에러메시지 띄우기
웹>PHP 일반
웹 사이트를 운영하다보면 사용자 입력 또는 프로그램 처리 시 조건에 맞지 않을 경우 예외처리를 해야한다. 이럴때는 해당 페이지에 스크립트 alert 을 이용하여 에러 메시지를 띄우고 페이지를 이동을 하게 되는데 보기가 좋지 않다. 이럴때 사용할 수 있는 방법은 처리되는 페이지를 ajax 처리 하여 결과를 받게 되는데 페이지 구조상 ajax 처리가 아닌 페이···
PHP 참조 변수 &(엠퍼센트) 연산자
웹>PHP 일반
PHP를 하다보면 간혹 변수앞에 &(엠퍼센트) 부호를 볼 수 가있다. 우리는 언제나 그렇듯 아무생각 없이 그냥 넘어갈때가 있는데 이 부등호는 AND 부등호와는 다르게 주소참조 부등호로 특정 값을 참조할때 사용하는 부등호이다. 조금 더 무식하게 예를 들자면 신용카드를 복제하여 사용할 수 있듯이 기존 변수를 참조시키고 해당 변수값을 변경하면 기존 변수값···
PHP 변수 체크 함수 isset 과 empty
웹>PHP 일반
PHP에서 변수 체크시 많이 쓰는 함수는 isset 과 empty 함수가 있다. 이 두함수 관계는 서로 친척 관계정도로 생각하면 되나 엄밀히 따지면 사용하는 용도가 다르기 때문에 체크해야할 변수 상황에 맞게 써야 한다. isset 같은 경우 변수가 존재하는지에 대한 체크이며 empty 함수의 경우 변수의 값이 비었는지 체크하기때문에 주로 값 필 수 여부 체···
PHP에서 배열은 히어로 변수이면서 괴물같은 녀석이다.
웹>PHP 일반
PHP에서 사용하는 배열은 정말 많은 영역에서 자유롭게 사용이 가능하며 관련되어 지원되는 내장 함수들도 많기때문에 배열처리를 하여 자주 사용하게 된다. 하지만 웹 영역만 접해본 개발자들에게 배열은 그냥 편리한 존재일 수 있지만 C 나 JAVA 처럼 소포트웨어쪽 개발도 접해본사람이라면 PHP 배열을 접했을 시 이게 배열인지 그냥 멀티 저장변수인지 신기할 수 ···
PHP를 통한 이미지 업로드 + 미리보기 처리
웹>PHP 일반
이미지업로드는 웹상에서는 많이 사용하는 기능으로 이미지를 업로드 후 PHP를 통해 파일 또는 DB를 통해 주로 저장한다. 이번편에서는 가장 기본적인 파일 업로드 후 PHP를 통해 저장 후 미리보기 프로그램 소스에 대해 알아보도록 하자. 1. 파일생성 FORM 을 작성 | file.php 아래와 같이 file 을 업로드 하는 기능을 가진 form을 생성해 보···
입력된 한글 단어를 PHP를 이용하여 초성,중성종성 단위로 분리해주는 함수 - linear_hangul()
웹>PHP 일반
이번포스팅은 정말 엉뚱하게도 한글 전체 DB를 만드는 과정에서 한글 초성,중성,종성 단위로 분리할 수 있을까라는 의문점이 들어 시작되었다. 간혹 MAC 기기로 부터 받은 파일명들을 보면 한글이 초성,중성,종성 단위로 분리되어 표시가 되는데 정말 쓸떼없이 한번 만들어보고 싶었다. 일단 처음에는 내 얕은 지식을 통해 mb_ord로 열심히 규칙을 찾아보았지만 어···
PHP 의 glob 함수를 이용한 서버 디렉토리에서 특정 파일 리스트만 추출하는 방법
웹>PHP 일반
PHP 에서 디렉토리관련하여 상당히 많은 함수들이 제공된다. 그중 패턴을 이용하여 파일명 리스트를 추출할 수 있는 glob 라는 함수가 있는데 오늘은 이함수에 대해 간단하게나마 알아 보도록 하자 먼저 이함수는 아래의 PHP 그룹 사이트에서 상세 정보를 확인 가능하다. PHP: glob - Manual PHP: glob - Manual www.php.net/···