PHP 53

52. PHP 날짜 더하기, 빼기 (date/strtotiem)

예제 결과 현재 일시 : 2017-12-14 11:51:18 현재로부터 1초 뒤 : 2017-12-14 11:51:19 현재로부터 1초 앞 : 2017-12-14 11:51:17 현재로부터 1분 뒤 : 2017-12-14 11:52:18 현재로부터 1시간 뒤 : 2017-12-14 12:51:18 현재로부터 1일 뒤 : 2017-12-15 11:51:18 현재로부터 1주 뒤 : 2017-12-21 11:51:18 현재로부터 1달 뒤 : 2018-01-14 11:51:18 현재로부터 1년 뒤 : 2018-12-14 11:51:18 현재로부터 4년 3개월 2일 1시간 뒤 : 2022-03-16 12:51:18 2001년 1월 1일 : 2001-01-01 00:00:00 2001년 1월 1일을 기준으로 1달 ..

PHP 2021.11.03

51. PHP 접근 제어자 (access modifier)

캡슐화 (encapsulation) 캡슐화(encapsulation)이라는 것을 알아봅니다. 캡슐화는 객체의 사용자에게 필요한 정보나 기능만을 노출시켜서 객체를 보다 사용하기 쉽도록 하고, 객체가 고장 나지 않도록 하는 여러 가지 방법들입니다. 결과적으로 객체를 좋은 부픔으로 만드는데 많은 도움을 줍니다. 객체지향 프로그래밍에서 접근제어자(access modifier) 혹은 속성의 가시성(property visibility)이라는 것은 캡슐화를 달성하는데 중요한 기능을 제공합니다. 접근제어자 (access modifier) 접근제어자란 해당 변수나 함수 등에 대한 사용자의 접근을 제한하는 역할을 합니다. 접근 제한을 통해서 해당 정보를 외부로부터 보호하는 역할을 합니다. php의 접근자에는 3가지가 있습..

PHP 2021.10.20

50. PHP 클래스 사용하기

클래스 선언은 class 키워드로 합니다. 이후 바로 클래스 이름이 나옵니다. 클래스 이름은 PSR(PHP 표준 권고 - PHP Standard Recommendation)-01에 따라 대문자로 시작하고 단어 간의 연결마다 대무자를 사용하는 StudlyCaps 형식을 따릅니다. Pascal Case라고 부르기도 합니다. class Fruit 클래스는 특정 역할을 하는 타입을 말합니다. 내부적으로 멤버 변수와 메서드를 가질 수 있습니다. 클래스 타입의 변수를 인스턴스라고 부릅니다. (멤버 변수 : 클래스 안에서 선언된 변수 / 메서드 : 클래스 안에서 선언된 함수) $fruit = new Fruit(); $drink는 인스턴스, Drink는 타입을 정의하는 클래스입니다. (인스턴스는 붕어빵 타입은 붕어빵 ..

PHP 2021.10.19

49. PHP JSON 다루기

JSON은 JavaScript Obejct Notation의 약자로 자바스크립트 타입 형식을 말합니다. 주로 브라우저와 ajax 통신을 하거나 REST 방식으로 다른 서버와 연동할 때 데이터 형식으로 사용됩니다. json_encode 함수는 PHP의 함수 데이터를 JSON 문자열로 바꿉니다. $fruit = ['apple'=>'사과','banana'=>'바나나']; $json_data = json_encode($fruit); //string(39) "{"1":"apple","2":"banana","3":"orange"}" json_decode 함수는 JSON 문자열을 PHP의 객체 형식으로 바꿉니다. $json_data = "{\"1\":\"apple\",\"2\":\"banana\",\"3\":\"or..

PHP 2021.10.19

48. PHP 직렬화와 역직렬화

직렬화는 객체나 배열 등 복합형 타입의 데이터를 저장하고 복호화할 수 있도록 문자열 혹은 바이트 배열 형태로 변환하는 것을 말한다. 아래 코드를 serial.php 파일에 저장하고 브라우저에서 결과를 확인한다. php에서 직렬화된 데이터는 문자열 타입이다. $load_data를 통해 확인한다. string(54) "a:4:{i:0;s:1:"a";i:1;s:1:"b";i:2;s:1:"c";i:3;s:1:"d";}" php에서 직렬화는 serialize 함수를 사용한다. $serial_data = serialize($data); 역직렬화는 unserialize 함수를 사용한다. $unserial_data = unserialize($load_data); 데이터를 직렬화해서 데이터베이스에 넣거나 파일에 저장하는..

PHP 2021.10.15

47. PHP 파일 읽고 쓰기(file_put_contents, file_get_contents)

file_put_contents 데이터에 파일에 저장한다. file_get_contents 파일 내용을 전부 문자열로 읽어 들인다. 아래 코드를 file_content.php 파일에 저장하고 브라우저에서 결과를 확인한다. localhost/file_content.php로 접속하면 data.txt 파일이 생성되고 파일을 열어보면 hello world라는 내용이 존재한다. 그리고 브라우저에는 hello world라는 문자열이 출력된다.

PHP 2021.10.14

46. PHP 비밀번호 암호화하기, 매칭하기

아무도 복호화할 수 없도록 비밀번호를 단방향으로 암호화하고 추후 검증 시 올바른 암호인지 확인하는 방법을 알아본다. 암호화된 데이터를 원래 형식으로 변환하는 것을 복호화라고 한다. 위 코드를 password.php 파일에 저장하고 브라우저에서 결과를 확인한다. string(8) "1234abcd" string(60) "$2y$10$NGaX1nkkf1jChwrGrMpisO9g5a44mI1jcKle5WIA.34vABfBnY6ru" bool(true) bool(false) 비밀번호 암호화는 관리자도 알 수 없도록 단방향 암화화를 해야 한다. 단방향 암호화는 다시 원래 암호로 되돌릴 수 없는 암호화다. password_hash 함수는 암호화 함수다. PASSWORD_BCRYPT 옵션은 암호화에 Bcrypt 알고..

PHP 2021.10.14

45. PHP html 이스케이프 처리 하기

사용자가 입력한 html은 언제든지 XSS(Cross Site Scripting) 공격의 가능성이 있다. 이러한 공격에 대비하기 위해 html을 치환한다. 위 코드를 escape.php 파일에 저장하고 브라우저에서 결과를 확인한다. localhost/escape.php로 접근하면 alert창이 실행되고, 소스보기를 보면 아래와 같이 표시된다. htmlspecialchars 함수는 html에서 XSS 공격을 방어하기 위해 문자열에서 특정한 특수 문자를 HTML 엔티티로 변환한다. XSS 공격은 Cross Site Scripting의 약자로 태그 등을 입력해서 서버의 보안 취약점을 노리는 공격이다. 인코딩한 결과를 반대로 바꾸려면 디코딩 함수인 h..

PHP 2021.10.14