wonder
정보보안 스터디 - 4주차 3일 - PHP 주소 검색 기능 본문
DB에 주소 txt파일 불러오기
주소 검색 기능 구현하는게 내부적으로 제일 고민하고 어려웠던 것 같습니다.
처음에 어떻게 데이터를 불러올까 고민하다가 txt 파일에서 불러와서 검색을 할까 고민도 하다가
일단 100만 줄이 넘는 주소 자료를 txt로 모두 불러와서 처리한다는 게 너무 시간이 오래걸릴 것 같았습니다.
주소 사이트 자체에서도 DB 활용하는 방법을 소개해주고 있기 때문에 SQL DB로 구현을 했습니다.
주소 사이트에서 가져오는 것 보다
우체국에서 DB 정리가 잘되어 있어서
해당 zip파일을 가져왔습니다.
한번에 모든 자료를 불러오기는 파일 크기가 크기 때문에
세종특별시.txt를 예시로 일단 해결하겠습니다.
처음에 이렇게 떠서 당황스러웠지만
엑셀에서 텍스트/CSV로 데이터를 가져와 파이프 | 를 기준으로 열을 나눠줍니다.
필요한 부분만 뽑아서 쓸 것이기 때문에
여기에서 필요없는 부분은 지우고
쉼표로 열 분리를 하는 CSV로 저장을 합니다.
SQL DB를 텍스트 파일로 불러오려면 CSV파일로 변경을 해야됩니다.
여기서 주의해야될 점은
ANSI 형식으로 인코딩되어있기 때문에 UTF-8 인코딩으로 바꿔줘야 합니다.
utf-8.CSV 파일을 가져오기를 통해 가져옵니다.
여기서 첫번째 행은 컬럼 이름이 되도록 설정했습니다.
잘 처리가 되었구요.
주소검색 기능 구현
나의 주소찾기 버튼을 클릭하면 새창으로 address.php 에 이동합니다.
DB 안의 주소를 검색하기 위해
입력한 주소를 post방식으로 주소 쿼리 페이지에 보냅니다.
post 방식으로 입력한 주소를 받구요.
열끼리 한번에 붙어서 검색되는 게 아니라, 따로 떨어져 있기 때문에
마음로 151 같이 검색을 했을 때 검색결과가 나오지 않습니다.
열 내용을 모두 붙여서 문장을 만들고 그 내용 중에서 검색하게 하려면
concat을 써서 열을 모두 더해줍니다.
'마음로 151 0 가락마을9단지 고운동' 안에서 마음로 151 이라는 검색결과가 있다면 모두 불러오겠다는 뜻입니다.
실제 MySQL에서도 통하는 것을 확인합니다.
처음 부분은 address.php 와 형식이 같습니다.
DB에 있는 열을 모두 불러오는 것이 아니라
원하는 열(1~7열) 까지만 불러오려고 합니다.
중간중간 띄어쓰기를 넣어주고 출력하면 원래는 1행만 노출됩니다.
하지만 while문으로 만약 행이 더 남아있다면
다음 행을 반복해서 노출시키도록 합니다.
마음로를 검색했을 때 결과가 잘 나옵니다.
다음시간에는 해당 주소를 클릭했을 때
회원가입 주소 페이지에 붙여쓰기 하면서 적용시키도록 해보겠습니다.
'hacking study > 웹개발' 카테고리의 다른 글
정보보안 스터디 - 5주차 4일 - php 게시판 제작 (feat. Lord of SQL Injection) (0) | 2022.11.13 |
---|---|
정보보안 스터디 - 5주차 3일 - 주소 검색 기능 마무리 (0) | 2022.11.13 |
정보보안 스터디 - 4주차 4일 - PHP 페이징 기능 (0) | 2022.11.07 |
정보보안 스터디 - 3주차 4일 - 회원가입 조건 (0) | 2022.10.30 |
정보보안 스터디 - 3주차 3일 - 회원가입 페이지 만들기 (0) | 2022.10.30 |