wonder

정보보안 스터디 - 4주차 3일 - PHP 주소 검색 기능 본문

hacking study/웹개발

정보보안 스터디 - 4주차 3일 - PHP 주소 검색 기능

wonder12 2022. 11. 6. 02:51

 

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문으로 만약 행이 더 남아있다면

다음 행을 반복해서 노출시키도록 합니다.

 

마음로를 검색했을 때 결과가 잘 나옵니다.

 

 

다음시간에는 해당 주소를 클릭했을 때

회원가입 주소 페이지에 붙여쓰기 하면서 적용시키도록 해보겠습니다.

 

 

 

 

Comments