[TIL] 생활코딩 WEB2-PHP (21.08.24)
글 삭제 (DELETE)
✅ index.php
<a href="create.php">create</a>
<?php if(isset($_GET['id'])) {?>
<a href="update.php?id=<?php echo $_GET['id']; ?>">update</a>
<form action="delete_process.php" method="post">
<input type="hidden" name="id" value="<?=$_GET['id']?>">
<input type="submit" value="delete">
</form>
<?php } ?>
- delete는 form을 거칠 필요가 없기 때문에 delete_process.php로 연결한다.
- 📌삭제 기능은 링크 방식(GET방식)로 하면 안되고 POST방식으로 해야한다.
링크로 연결했을뿐인데 데이터가 삭제되기 때문이다. - 따라서 form, hidden, submit을 이용해서 삭제할 id 데이터를 POST방식으로 넘겨준다.
✅ delete_process.php
- 📌unlink(삭제할 파일의 위치): POST방식으로 id데이터 값을 받는다.
- header로 첫 index페이지로 이동한다.
파일로 모듈화-require
✅ lib/print.php
- 재사용할 수 있는 로직들을 라이브러리라고 한다.
- 📌lib이라는 디렉토리 안에 재사용할 가능성이 있는 것들을 정리정돈해둔다.
- index, create, update.php에 있는 함수 정의를 print.php에 모아둔다.
✅ view/bottom.php
</body>
</html>
- 📌단, 보여지는 것과 관련된 코드는 라이브러리와 별도로 빼는 경향이 있다. view라는 디렉토리를 만든다.
✅ view/top.php
- require를 통해 명확하게 print_title()이 어디서 왔는지 명시하고 싶다
- 하지만 redeclare라고 오류가 뜬다 이미 index.php의 require('print.php')에서정의가 됐기때문이다
- 📌php에서는 한번 만들어진 함수는 다시 재정의 할 수 없도록 되어있다.
- 📌이때 require_once를 사용하면 이미 로드된 php파일은 무시한다.
- 중복해서 php파일이 호출되는 것을 방지한다. 가급적이면 require_once를 쓰자.
✅ index.php
- require(파일 주소): 필요한 모듈을 불러온다.
보안 XSS
Cross Site Scripting
공격자가 script태그를 이용해서 오류를 발생시킬 수 있다.
사용자가 입력한 정보가 출력되는 부분을 모두 의심해야한다.
htmlspecialchar()함수를 통해서 태그를 사용할 경우, 그 태그의 꺽새를 문자 그대로 출력하도록 바꿔버린다.
다만 htmlspecialchar()함수를 쓰면 이미지 태그라든지, 줄바꿈 이라든지 몇몇 필수적으로 필요한 것들을 못할 수 있다.
Author And Source
이 문제에 관하여([TIL] 생활코딩 WEB2-PHP (21.08.24)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dnflrhkddyd/TIL-생활코딩-WEB2-PHP-21.08.24저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)