본문 바로가기

프로그래밍/PHP19

PHP 파일 업로드와 다운로드 만들기 PHP 에서 간단히 파일 업로드와 다운로드를 구현해 봅니다. 파일 업로드 할때는 파일명 중복 방지와 파일명을 추측해서 다운로드 하는 것을 방지하기 위해 랜덤하게 파일명을 만들어서 서버에 저장합니다. 보안을 위해서는 파일 업로드 위치를 웹루트 밖에 하는것이 좋습니다. 파일 정보를 데이터베이스에 저장할 때도 파일을 구분할 파일 아이디를 예측 가능하지 않게 만들어서 다운로드시 사용합니다. 보안을 위해서는 다운로드 프로그램에 권한이 적용되면 더 좋습니다. 전체 예제 파일은 글 하단에 첨부하여 두었습니다. 1. 파일정보를 저장할 테이블 구조- 데이터베이스는 캐릭터셋 utf8, collation은 utf8_general_ci 로 만들었습니다. CREATE TABLE upload_file ( file_id VARCH.. 2018. 4. 21.
PHP 오토로드(Auto Load) - 클래스 자동로드 사용하기 이제 PHP 에서도 클래스를 사용해서 객체지향 프로그래밍을 하는 것이 일반적이 되어 가고 있습니다. 보통 클래스는 하나의 파일에 정의하고 클래스를 사용할때 include 해서 사용하게 됩니다. 이 때 클래스가 많아지면 include 하는 코드가 많아지게 됩니다. PHP 5에서 부터는 이러한 클래스를 자동으로 로드하는 기능을 제공합니다. spl_autoload_register() 함수를 사용하여 처리할 수 있습니다. 1. 이번 예제는 폴더 구조는 다음과 같습니다. 폴더 구조는 예제를 위해서 임의로 정한 것이므로 자신이 편한 곳에 사용하면 되겠습니다. - /comm/classes/Apple.php, Banana.php : 샘플 클래스 파일 입니다.- /comm/lib/autoload.php : 클래스를 자동.. 2018. 4. 20.
PHP 실행 지연(delay) 시키기 PHP 스크립트(script) 실행(execution)시 테스트 등의 목적으로 실행을 지연(delay)시켜야할 경우가 있습니다. 이때 사용할 수 있는 함수 입니다. 1. 초 단위로 지연 int sleep ( int $seconds ) $seconds로 주어진 초 만큼 실행을 지연합니다. 성공시 0을 반환, 실패시 FALSE를 반환합니다. 음수를 지정하면 오류입니다. Warning이 발생합니다. 2. 마이크로초 단위로 지연 void usleep ( int $micro_seconds ) $micro_seconds로 주어인 마이크로 초(백만분의 1초) 만큼 실행을 지연합니다. 값을 반환하지 않습니다. 음수를 지정하면 오류입니다. Warning이 발생합니다. 3. 지정된 시간까지 지연 bool time_slee.. 2018. 4. 19.
PHP에서 jQuery Ajax로 json 데이터 주고받기 클라이언트는 jQuery Ajax 를 사용하고, 서버측은 PHP 를 사용하여 json 타입의 데이터를 주고 받는 방법을 알 아 봅니다. 테스트에는 PHP 7.1.10 버전이 사용되었습니다. 클라이언트인 브라우저에서는 jQuery의 ajax 메소드를 사용합니다. 1. jQuery 라이브러리를 포함합니다. 2. 데이터를 입력 받는 폼을 만듭니다. GET 방식으로 데이터를 전달하기 위해 AjaxCall('GET'); 함수를 호출하고, POST 방식으로 전달하기 위해서AjaxCall('POST'); 함수를 호출합니다. 이름 이메일 3. 데이터를 ajax 로 주고 받는 함수를 정의합니다. 서버로 전달할 데이터를 만드는 방법은 아래 처럼 세 가지 정도 있습니다. - 자바스크립트 객체로 만드는 방법 예) var da.. 2018. 4. 19.
그누보드 사용법 - 기본설정, 게시판, 메뉴, 페이지 만들기 "그누보드5 설치하기 - Eclipse PDT 프로젝트로 설치"에서 만들었던 개발용 프로젝트를 기본으로 그누보드5의 간단한 사용방법을 알아보겠습니다. 자세한 사용법은 그누보드 개발사의 매뉴얼 페이지(https://sir.kr/manual/g5)를 참조하시면 되겠습니다. 관리자 아이디와 비밀번호로 로그인하여 관리자 모드로 들어갑니다. 1. 기본환경 설정하기 관리자 메뉴의 "환경설정 -> 기본환경설정"으로 들어갑니다. - 홈페이지 제목은 브라우저 타이틀바에 나오는 제목을 변경합니다.- 최고관리자는 설치시 지정한 아이디인데, 회원 관리에서 새 회원을 등록하고, 변경할 수도 있습니다.- 관리자 이메일 주소와 메일 발송 이름을 자신의 것으로 지정합니다.- 포인트 사용은 사이트에서 포인트를 사용할지 지정합니다. 필.. 2018. 4. 18.
그누보드5 설치하기 - Eclipse PDT 프로젝트로 설치 Windows에 개발용으로 그누보드5를 설치하는 방법을 알아보겠습니다. 데이터베이스는 MySQL 또는 MariaDB이고, PHP는 5.4 이상을 사용합니다. 개발툴로는 Eclipse와 PDT 를 사용합니다. Eclipse, MariaDB, PDT 이클립스 플러그인, PHP 의 설치는 이 블로그의 PHP 카테고리의 글들을 참고 하시면 되겠습니다. PHP는 Webmatrix로 설치한 것을 사용해도 됩니다. 1. 이클립스를 실행하고 메뉴에서 "File -> New -> Other..."를 선택합니다. 프로젝트 템플릿에서 "PHP -> PHP Project"를 선택하고 "Next" 버튼을 누릅니다. 2. 프로젝트명을 "gnu5"로 입력합니다. PHP Version은 자신의 PHP 버전에 맞는 것을 선택하면 됩니.. 2018. 4. 18.
PHP 마이그레이션시 자주 나오는 DEPRECATED 함수 대체하기 PHP로 만들어진 오래된 홈페이지에 PHP 버전을 올릴 경우 여러가지 문제가 발생할 수 있습니다. 파라미터를 변수에 자동으로 할당하는 register_globals 옵션 문제, 2018. 4. 17.
Microsoft Webmatrix 설치하기 Webmatrix는 마이크로소프트에서 만든 웹 개발툴로 .NET, PHP 등으로 개발된 오픈소스 애플리케이션을 쉽게 설치하여 사용할 수 있도록 되어 있습니다. Webmatrix를 설치하고, 간단한 PHP 웹 애플리케이션을 만드는 환경을 테스트해보겠습니다. Webmatrix의 설치는 Microsoft Web Platform Installer 5.0를 통해서 하게 됩니다. 그러므로 먼저 웹 플랫폼 인스톨러를 설치합니다. 1. 다음 URL에서 다운로드 받습니다. https://www.microsoft.com/web/downloads/platform.aspx "Free Download" 버튼을 눌러 wpilauncher.exe 파일을 다운로드 받습니다. 2. 다운로드 받은 파일을 더블클릭하여 실행합니다. 설치가.. 2018. 4. 17.
PHP 클래스 - 오버라이드(Override) PHP 클래스에서 오버라이드는(Override) 부모 클래스의 메소드를 재정의 하는 것을 뜻합니다. 재정의시에는 메소드명과 인자가 동일해야 합니다. 접근제어자는 같거나 더 많이 허용하는쪽으로 지정할 수 있습니다. 메소드명이 같은데 인자가 다르면 에러가 발생합니다. 다른 객체 지향언어는 메소드 오버로딩(overloading) 이라고 해서 메소드의 이름은 같고, 인자가 다른 메소드를 정의하여 주어지는 인자에 따라 다른 메소드가 호출되도록 할 수 있지만, PHP 는 오버로딩은 지원하지 않습니다.(PHP에도 오버로딩이라는 기능이 있습니다. 하지만, 이 기능은 일반적인 객체 지향 언어에서의 오버로딩과는 다른 기능 입니다.) 이 오버라이딩 규칙은 생성자(__constructor)에도 동일하게 적용됩니다. class.. 2018. 4. 10.
PHP 클래스 상속(Inheritance) 이번에 알아볼 내용은 PHP 에서 클래스(class)를 사용할 때 객체간에 부모, 자식 관계를 가지도록 해주는 상속(inheritance)에 대해서 알아보겠습니다. 상속(inheritance)을 부모 - 자식 관계로 표현하는 것은 무리가 없어 보입니다. 자식이 부모로부터 뭔가를 물려 받는것이 상속이기 때문입니다. 중요한 것은 자식이 부모로부터 모든 것을 물려 받았기 때문에 자식은 원래 자신의 것도 있고, 물려 받은것도 있으므로 부모보다 더 많은 것을 가진다는 것입니다. 프로그래밍 언어적인 측면에서의 설명은 좀 다르게 할 수 있습니다. 어떤 객체를 만드는데 있어서 공통적인 부분을 뽑아서 부모로 하고, 개개의 객체에 특징적인 부분은 자신이 가지고 있도록 만드는 것이 상속 관계가 됩니다. 부모, 자식간에 재산.. 2018. 4. 9.
PHP 클래스(class) 기본 사용하기 PHP로도 객체지향 프로그래밍을 할 수 있습니다. PHP 4 버전 때부터 쓸 수 있었고, PHP 5가 되면서 기능이 추가되고 성능이 향상되었습니다. 1. 클래스의 기본구조 및 이름 규칙 - class 키워드 다음에 클래스 이름이 나옵니다. - 클래스 전체는 중괄호 {}로 둘러싸여 집니다. - 안쪽에 프로퍼티와 메소드의 정의가 나옵니다. - 프로퍼티의 정의는 보통 앞쪽에 적지만 위치는 관계가 없습니다. 뒤쪽에 나와도 되고, 중간에 나와도 됩니다. - 프로퍼티와 메소드의 정의 앞에는 private, public 이라는 접근제어자가 붙어 있습니다. 이것은 해당 멤버를 클래스 외부에서 접근할 수 있는가를 나타냅니다. 클래스의 기본적인 구조를 보았습니다. 이제 클래스 이름, 프로퍼티와 메소드의 이름을 짓는 방법에.. 2018. 4. 9.
자동등록방지 구글 reCAPTCHA(리캡챠) 설치하기 - PHP 로봇에 의한 스팸글 등록 및 자동회원 가입을 막기 위한 구글 reCAPTCHA 를 설치하는 방법에 대해서 알아보겠습니다. 구글 reCAPTCHA는 글쓰기 또는 회원 등록 페이지에서 사용자의 동작을 분석하여 로봇으로 판단이 되면 이미지중에 특정 부분을 선택하는 창이 띄워 사람임을 확인하도록 합니다. 리캡챠를 사용하기 위해서선 구글에 가입을 하여 사이트키와 프라이빗키를 발급받은 후, 리캡챠를 사용할 도메인을 등록하여야 합니다. 현재 제공되는 방식을 사용자가 로봇이 아님을 나타내기 위해서 직접 클릭해야 하는 reCAPTCHA v2 와 클릭하지 않아도 자동으로 판단하는 Invisible reCAPTCHA가 있습니다. 각각의 사용하는 방법에 대해서 알아 보겠습니다. 구글 계정이 있다고 가정을 하고 다음 사이트로 .. 2018. 4. 4.
PHP 날짜 함수 사용하기 - date, strtotime, mktime PHP 에서 날짜를 다루는데는 주로 date(), strtotime(), mktime() 의 세가지 함수를 사용 합니다. 각각의 사용법과 몇가지 응용에 대해서 알아보도록 하겠습니다. 1. date() 함수. string date ( string $format [, int $timestamp ] ) 정수형으로 주어지는 timestamp나, timestamp가 주어지지 않았을 경우에는 현재 로컬 시간을 사용하여, 주어진 포맷 문자열에 따라 형식화한 문자열을 반환합니다. 즉 timestamp는 선택적이고, 기본값은 time()의 값입니다. 지원되지 않는 포맷 문자는 그대로 출력됩니다. 결과) 2017-01-10 2. strtotime() 함수. int strtotime ( string $time [, int .. 2018. 4. 3.
PHP 7.1 실행시 VCRUNTIME140.dll 오류 문제 해결하기 테스트 목적으로 PHP 7.1 (php-7.1.0-nts-Win32-VC14-x64) 을 받아서 실행을 해보니 아래와 같은 에러가 발생하였습니다. "컴퓨터에 VCRUNTIME140.dll 이(가) 없어서 프로그램을 시작할 수 없습니다. 프로그램을 다시 설치하여 이 문제를 해결하십시오." 라는 에러 메세지 입니다. PHP의 설치는 zip 파일 받아서 적당한 위치에 풀어만 두면 되는데 다시 설치해서 해결될 문제는 아니란것을 알 수 있습니다. 다운받은 전체 PHP의 zip 파일명을 보면 VC14 라는 단어가 들어 있습니다. 이 VC14 는 Microsoft Visual C++ 2015 버전으로 컴파일 되었다는것을 나타냅니다. Microsoft 에서 이런 경우를 위해서 필요한 dll 파일들만 배포를 합니다. 다.. 2018. 4. 2.
PHP 7 에서 Oracle 연결하기 PHP에서 Oracle 사용할 수 있도록 연결 작업을 해봅니다. PHP의 설치는 "Windows용 XAMPP 설치하기 - (Apache, PHP, MariaDB)" 를 참조 합니다. 그때 설치된 PHP 버전은 7.0.13 입니다. XAMPP 로 설치가 되었고, win32 입니다. 테스트 환경도 이때 생성한 프로젝트를 사용하겠습니다. 현재 운영체제는 Window 10 x64 이고, Oracle 은 Express Edition 11g r2 입니다. 이 같은 환경에서 PHP와 Oracle 의 연동을 위해서는 한가지가 더 필요합니다. 바로 Oracle instant client 입니다. php가 win32 이니 instant client도 win32, 11g용을 받아서 설치하겠습니다. 1. Oracle Inst.. 2018. 4. 2.