본문 바로가기

비개발자의 개발 일지

현장 팀장에서 수출 ERP까지 — AI와 함께 시스템을 만든 기록

시리즈 보기
php

PHP updateform — 세션 ID 저장 + 기존 값 채운 수정 폼 완전 정리

by 왕진 2026. 6. 19.
반응형

 

 

Web Development · updateform.php

updateform.php —
수정할 데이터를 DB에서 미리 가져와 폼에 채우기

SELECT → fetch → input value에 기존 값
시작 핵심 흐름
session_start(); require_once("MYDB.php"); $pdo = db_connect(); $id = 1; // 수정 대상 ID $_SESSION['id'] = $id; // 세션에 저장 (다음 페이지에 운반) $sql = "SELECT * FROM member WHERE id = :id"; $stmh = $pdo->prepare($sql); $stmh->bindValue(':id', $id, PDO::PARAM_INT); $stmh->execute(); $row = $stmh->fetch(PDO::FETCH_ASSOC); // 폼에 기존 값 채워서 출력 <INPUT type="text" name="last_name" value="<?=htmlspecialchars($row['last_name'])?>">

1 수정 페이지의 표준 흐름
1) 수정할 ID를 결정 (URL 매개변수, 세션, 또는 고정값)
2) DB에서 해당 행을 SELECT
3) 폼의 input value에 그 값을 채워 출력 (사용자가 일부만 변경 가능)
4) 사용자가 수정 후 송신 → update.php로 POST

2 세션에 ID 저장
$_SESSION['id'] = $id;

다음 페이지(update.php)에서 "어느 행을 수정해야 하는지" 알아야 한다. 세션에 두면 클라이언트가 조작할 수 없어 안전.


3 XSS 방어 — value에 htmlspecialchars
value="<?=htmlspecialchars($row['last_name'])?>"

DB 값에 따옴표·꺽쇠가 있으면 그대로 출력 시 폼이 깨진다. htmlspecialchars로 안전하게 이스케이프.


 

반응형

 

4 자주 하는 실수
· ID를 URL로 받을 때 검증 안 함 → 다른 사람 데이터 수정 가능 (IDOR 취약점)
· htmlspecialchars 누락 → 폼 깨짐 + XSS
· 세션 시작 안 함 → $_SESSION이 안 살아남음
· fetchAll로 받아 한 행만 쓸 때 [0] 인덱싱 빼먹음

핵심 한 줄 요약

SELECT WHERE id수정할 한 행 가져오기
fetch(FETCH_ASSOC)한 행을 키-값 배열로
input value=기존 값을 폼에 채움
$_SESSION['id']수정 대상 ID 안전하게 운반
htmlspecialcharsvalue에 입력 시 필수
권한 검증실무에선 "내 데이터인가" 체크
update.php가 실제 수정 처리
반응형

댓글