분류 전체보기139 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. 인증 인증(세션 vs 토큰) 개요세션(Session) 방식발급 방식:사용자가 로그인을 하면, 서버는 "세션 키"를 발급서버 내부 DB나 메모리에 사용자 id - 세션 키를 매핑해 저장클라이언트에게 세션 키를 전달하고, 클라이언트는 이 키를 쿠키 등에 저장검증 방식:클라이언트 요청 시 세션 키를 전송서버는 자신이 가진 세션 저장소를 참조해 해당 세션 키의 유효성 및 해당 사용자와의 매칭 여부 확인유효한 경우 응답 제공한계:서버 확장(수평 확장) 시 세션 공유 문제 발생세션 정보를 모든 서버에 공유하기 위해 추가적인 DB나 캐시(레디스 등) 필요JWT(Token) 방식JWT란?RFC 7519에 정의된 표준화된 토큰 포맷헤더(Header), 페이로드(Payload), 시그니처(Signature)로 구성된 JSON .. 2024. 12. 17. useQuery React Query의 useQuery는 React 어플리케이션에서 데이터를 관리하고 서버와의 통신을 효율적으로 처리할 수 있도록 도와주는 훅입니다. useQuery는 데이터를 가져오는 과정과 상태관리를 간소화하며, 캐싱, 리패칭, 로딩/에러 상태 관리 등을 자동으로 처리해줍니다. useQuery(queryKey, fetchFunction, options); 첫번째 매개변수로 쿼리키 query key - 데이터를 구분하기 위한 키입니다.- 배열로 작성됩니다.- 예를 들어, ['posts'] 두번째로 데이터를 가져오는 함수 fetch function- 데이터를 가져오는 비동기 함수입니다. 세번째로 옵션 객체 option object 를 받을 수 있습니다. 옵션들을 보겠습니다. 1. enabled- 기.. 2024. 12. 13. Suspense, ErrorBoundary 그리고 React Query 항상 코드 짤때마다 고민이 많았다.주로 데이터를 가져올 때 try...catch를 사용하는 경우가 많았는데 이 경우에 문제(?) 점이 있다. "하... 이게 맞나.." 하는 생각이 든다는 것이다. 해당 api를 선언하는 함수를 만들어주고, 그 안에 try...catch...를 때려박아주고 아닐 시의 UI 처리까지 그걸 매번 반복해야했다. 그리고 그 뿐인가 api를 호출할 때, 데이터를 지금 가져오고 있는지.. 가져오는데 실패했는지.. 이것 또한 UI에서 보여주어야 하기 때문에 보일러 플레이트 코드가 계속 늘어났다. 이번에 리액트 19버전이 나왔다고 해서 봤는데 useTransition을 쓰거나, use를 쓴다던지 이런 불편함을 해소하는데에 많이 초점이 맞춰져 있는 것 같았다. 그래서 아예 하는김에.. 2024. 12. 12. 리액트 메이저 버전 업데이트 (2) - use use는 프라미스를 동기적으로 읽을 수 있게 해주는 리액트 api이다.이번 메이저 업데이트를 통해서 본 19 버전은 개발자의 개발 경험에 초점을 많이 맞춘 것 같다.클래스형 개발에서 함수형 개발로 업데이트 한 것은 렌더링이 잦은 리액트에서 필수적이었다면이번 메이저 업데이트는 필수적이지는 않지만, 기존에 개발을 하면서 번거로웠던 것들, 있으면 좋았던 것들이 많이 추가된 것 같다. 그 중에서 use 리액트 api의 경우에는, 개발자의 개발 경험에 대해서 가장 긍정적인 api가 아닐까 싶다. 들어가보자. 본 게시글은 하단의 포스트를 참조하였습니다. use는 다음과 같이 사용한다.import {use} from 'react'function MessageComponent({messagePromise}){ con.. 2024. 12. 12. 이전 1 ··· 3 4 5 6 7 8 9 ··· 14 다음