[TIL] 생활코딩 WEB2-PHP (21.08.24)

5625 단어 TIL생활코딩phpTIL

글 삭제 (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()함수를 쓰면 이미지 태그라든지, 줄바꿈 이라든지 몇몇 필수적으로 필요한 것들을 못할 수 있다.

좋은 웹페이지 즐겨찾기