[WEB] PHP header(), exit()

Profile-exe·2021년 8월 15일
0

web

목록 보기
3/11
post-thumbnail

웹 게시판의 글 삭제 기능을 구현하고 있었다.

해당 게시글의 삭제 URL로 저자가 아닌 사람이 접속한 경우 로그인 페이지나 INDEX 페이지로 REDIRECT 시키려고 하는데, 중간에 header()문이 있더라도 게시글 삭제가 진행되었다.

발생한 문제는 header() 뒤에 바로 exit()를 호출함으로써 해결할 수 있었다.


PHP manual - function.header

header(string $header, bool $replace = true, int $response_code = 0): void
  • raw HTTP header (가공하지 않은 header)를 전송하기 위해 사용된다.
  • 반드시 실제 출력 이전에 호출되어야 한다.
  • header() 함수 위에 include, require로 가져온 코드에 공백이 존재한다면 에러가 발생한다.

내가 사용하는 것은 redirect를 하는 것인데, 매개변수에 "Location: ..."을 넣어주면 된다.

이때 스크립트가 종료되지 않고 실행되어 내가 의도하지 않게 동작하게 되었다. 이를 방지하기 위에 exit() 함수를 이용했다.


exit()

PHP manual - function.exit

exit(string $status = ?): void
exit(int $status): void

exit() 함수를 사용해서 header() 호출 후 뒤의 스크립트는 실행되지 않게 할 수 있었다.

exit(header('Location: ../index.php?msg=wrong_approach'));

정리

  • header()를 호출하면 그 자리에서 바로 redirect하는 것이 아닌, 뒤에 존재하는 코드도 실행한다.

  • 코드 마지막에 header()redirect 하는 것은 상관 없지만, header() 호출 후 코드가 존재한다면 header() 바로 뒤에 exit()를 호출해서 남은 코드가 실행되는 것을 방지하도록 하자.


참고


게시판 프로젝트 URL

Github - Profile-exe/CRUDboardsite

profile
컴퓨터공학과 학부생

0개의 댓글