본문 바로가기

Language22

도커와 라라벨 도커는 어플리케이션과 그 실행환경을 함께 패키징하여 어디서나 동일하게 실행할 수 있도록 돕는 도구다. 즉, 소프트웨어를 컨테이너라는 독립된 단위로 묶어서, 개발환경, 테스트 환경, 실제 운영환경 간의 차이를 줄여줍니다.   몇가지 주요개념- 컨테이너 Container어플리케이션 실행에 필요한 코드, 라이브러리, 환경 설정 등을 함께 포함하는 가벼운 가상화 단위이다.이는 서로 격리되어 실행되며, 시스템 리소스를 효율적으로 사용할 수 있게 한다. - 이미지 Image컨테이너를 생성하기 위한 템플릿이다. 개발자가 어플리케이션 환경을 정의하면, 이를 기반으로 컨테이너가 만들어진다.  - 도커파일 DockerFile 이미지를 생성하기 위한 설정 파일로 어플리케이션 설치 및 구성에 필요한 명령들을 순차적으로 작성한.. 2025. 3. 14.
코딩 스타일 권장 가이드(2) foreach $value) { // foreach body} try.. catch  do..while 2025. 2. 7.
코딩 스타일 권장 가이드 (1) PSR-1 - PHP 코딩 스타일 권장 가이드" data-og-description="# **1. Overview** - 파일은 태그 ` PHP 코드는 긴 태그 또는 짧은 에코 태그를 사용해야합니다 . 다른 태그 변형을 사용해서는 안됩니다. `` **…" data-og-host="wikidocs.net" data-og-source-url="https://wikidocs.net/43540" data-og-url="https://wikidocs.net/43540" data-og-image="https://scrap.kakaocdn.net/dn/dox83G/hyYcbV7cIY/S4o4DtlKVNXZvrqr9Mvfkk/img.png?width=100&height=52&face=0_0_100_52"> PSR-1.. 2025. 2. 7.
디자인 패턴 1. 싱글턴- 한번 생성한 인스턴스를 전역적으로 공유한다.- 데이터베이스 연결에 자주 사용된다.- DB 연결을 한번만 생성하고 재사용하기 때문에 성능이 최적화된다는 장점이 있다. class Database{ private static $instance = null; private $connection; private function __construct(){ $this -> connection = new PDO("mysql:host=localhost;dbname=test", "user", "password"); } public static function getInstance(){ if(self::$instance === null){ sel.. 2025. 2. 4.
PRG 패턴 1. PHP에서는 POST 요청 이후 새로고침이 된다. php에서 같은 파일에 post 요청을 처리하는 코드가 있을 때, 폼을 제출하면 페이지가 새로고침된다.왜냐하면- 사용자가 입력한 데이터를 폼을 통해 post로 보낸다.- php가 post 요청을 받아서 처리한다.- 브라우저는 응답을 받고 페이지를 다시 로드한다. 2. 문제점 : 새로고침하면 같은 post 요청이 다시 실행된다.  전송 예를 들어 이런 코드가 있다고 해보자. 데이터베이스에 어떤 데이터를 저장하는 코드다.이 코드는 잠재적인 문제가 있는데,- 사용자가 폼을 입력하고 전송버튼을 누르면 post 요청이 서버로 간다.- php가 데이터를 받아서 출력 ( 또는 저장 )- 이 상태에서 새로고침하면 이전 post 요청이 다시 실행된다. .. 2025. 1. 31.
FILTER ! : 외부에서 온 데이터는 검증해야 한다. 1. PHP 필터 확장 Filter Extension 필터 확장은 외부 입력을 검증하고 불필요한 데이터를 제거하는 함수들을 포함하고 있다.filter_list()를 사용하면 php에서 제공하는 모든 필터를 확인할 수 있다.  Filter Name Filter ID $filter) { echo "$filter" . filter_id($filter) . ""; } ?>    2. PHP에서 필터 확장을 사용해야 하는 이유 웹 어플리케이션에서는 다양한 외부 입력을 받게 된다.  예를 들어- 사용자 입력 (폼데이터)- 쿠키데이터- 웹서비스 데이터 (api응답)- 서버 변수 .. 2025. 1. 31.
SQL 인젝션 방지, htmlspecialchars(), isset() 1. SQL 삽입공격이란? SQL 삽입 공격은 사용자가 입력한 데이터가 SQL 쿼리문제 직접 포함되면서 발생하는 보안 취약점이다.공격자가 악의적인 SQL 코드를 입력해서 db데이터를 조회하거나 삭제할 수 있다. SQL 삽입 공격에 취약한 코드 예시$name = $_GET['name']; // 사용자의 입력을 그대로 사용한다. 보안에 취약하다.$sql = "SELECT id, name, email FROM users WHERE name = '$name'";이러한 경우에 사용자가 만약에 ' OR '1'='1 을 입력했다. 그러면SELECT id, name, email FROM users WHERE name = '' OR '1'='1'뒤에 항상 참인 조건을 넣어서 users 테이블의 모든 데이터가 조회되게 된.. 2025. 1. 31.
php 개발 시 참고사항 (3) - 연관배열 1. php에서의 배열 php에서의 배열은 2가지 형태를 가진다. 하나는 우리가 흔히 아는 숫자 인덱스 배열하나는 키를 가지는 연관배열이다. 다음은 그냥 배열을 생성하는 함수다. 일반배열도 만들 수 있고, 연관배열도 만들 수 있다. 배열을 생성하는 함수이지, 배열의 종류를 결정하지는 않는다.ex_arr = array();  // 숫자 인덱스 배열 (Indexed Array)$numbers = array(10, 20, 30);// 연관 배열 (Associative Array)$user = array("name" => "Alice", "age" => 25);  2. 차이점 배열타입설명예제숫자인덱스배열인덱스가 0,1,2... 숫자로 자동지정된다. $arr = array("Apple", "Banana", "Ch.. 2025. 1. 31.
php 개발 시 참고사항 (2) * PHP 5.3.6 기준으로 작성함  1. mysql_fetch_assoc()  * mysql_fetch_assoc()이란- MySQL에서 데이터를 연관배열 (associative array)로 가져오는 함수- SQL 결과셋에서 한행 row를 가져오고, 컬럼명을 키로 갖는 배열을 반환한다. * array()에 담으면 사실상 JSON 구조와 동일한가?- php에서 array()로 데이터를 담으면 key-value 형식이라 JSON과 유사하다.- json_encode()를 사용하면 실제로 JSON 형태로 변환가능하다.  2. MySQL에서 데이터를 조회하고, array()에 저장하는 코드- 아래의 코드는 MySQL에서 데이터를 조회한 후, mysql_fetch_assoc()을 사용해서 배열에 저장하는 방법.. 2025. 1. 31.
PHP 개발 참고 사항 1. 한 php 파일에서 폼처리 + db연결 + 쿼리 2. 별도의 php 파일에서 db 관련 기능을 함수로 분리해서 사용하기   3. mysql_connect()란 - 이 연결방식은 오래된 방식이라서 보안문제 때문에 지금은 mysqli나 pdo가 많이 대체로 사용된다.- 다음과 같은 특징을 가진다.    1. 연결 성공 시에 연결 id를 반환한다, 실패하면 false를 반환한다.    2. mysql_select_db()로 사용할 데이터베이스를 선택해야한다.    3. 쿼리 실행은 mysql_query()로 한다.    4. mysql_fetch_assoc() 함수로 결과를 가져온다.    5. php 7부터는 제거되었음  4. form 을 통해서 api 호출하기 php 5.3.6에서 form을 통해 a.. 2025. 1. 31.