몽상실현개발주의

[생활코딩] 15.4~5 데이터를 HTML 에 표현하기 - 2 ~ 3 본문

Language/php

[생활코딩] 15.4~5 데이터를 HTML 에 표현하기 - 2 ~ 3

migrationArc 2021. 5. 21. 00:37

[생활코딩] 15.4~5 데이터를 HTML 에 표현하기 - 2 ~ 3

생활코딩 php 강좌

15. PHP와 MYSQL의 연동

15.4 데이터를 HTML 에 표현하기 2

<?php
echo '<a href="#">test</a>';

echo htmlspecialchars('<a href="#">test</a>');
echo '<br/>';
?>

// test (link)
// <a href="#">test</a>
  • echo 로 html tag 를 출력하면 tag 가 동작하여 출력
  • htmlspecialchars() 를 사용하면 입력된 html tag 를 작성된 문자열 그대로 출력
    • 사용자가 html tag 입력을 이용한 공격을 방지
    • 의도 되지 않은 script 동작을 방지
    • 입력에 의한 공격을 방어 : Filtering
    • 출력에 의한 공격을 방어 : Escaping

 

 

15.5 데이터를 HTML 에 표현하기 3

  • Link 에 해당하는 특정 정보를 본문에 출력 하기
    • Data 에 대한 식별자인 id 값을 전달
    • Link 에 해당하는 id 값이 url 에 추가되어, 사용자가 열람하고자 하는 Data 를 화면에 출력
      • url : ~/list.php?id=idNum

 

<?php
$mysql = mysqli_connect(hostname, username, password);
mysqli_select_db($mysql, 'opentutorials');
$list_result = mysqli_query($mysql, 'SELECT * FROM topic');

if(!empty($_GET['id'])) {
    $topic_result = mysqli_query($mysql, 'SELECT * FROM topic WHERE id = '.mysqli_real_escape_string($mysql, $_GET['id']));
    $topic = mysqli_fetch_array($topic_result);
}?>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <style type="text/css">
      ...
    </style>
  </head>
  
  <body id="body">
    <div>
      <nav>
        <ul>
          <?php
          while($row = mysqli_fetch_array($list_result)) {
            echo "<li><a href=\"?id={$row['id']}\">".htmlspecialchars($row['title'])."</a></li>";
          }
          ?>
        </ul>
        <ul>
          <li><a href="input.php">추가</a></li>
        </ul>
      </nav>
      <article>
        <?php
        if(!empty($topic)){
        ?>
        <h2><?=htmlspecialchars($topic['title'])?></h2>
        <div class="description">
          <?=htmlspecialchars($topic['description'])?>
        </div>
        <div>
          <a href="modify.php?id=<?=$topic['id']?>">수정</a>
          <form method="POST" action="process.php?mode=delete">
            <input type="hidden" name="id" value="<?=$topic['id']?>" />
            <input type="submit" value="삭제" />
          </form>
        </div>
        <?php
        }
        ?>
      </article>
    </div>
  </body>
</html>

 

if(!empty($_GET['id'])) {
  $topic_result = mysqli_query($mysql, 'SELECT * FROM topic WHERE id = '.mysqli_real_escape_string($mysql, $_GET['id']));
  $topic = mysqli_fetch_array($topic_result);
  • 전달된 인자에 'id' 값이 존재하면 (empty() == false), $topic 에 해당하는 Data를 저장
    • url 을 통해 id 값을 받아옴
  • 전체 Data 중 특정 Data 를 조회 할때, id 값을 이용하여 page 상에 보여주기 위함
  • mysqli_fetch_array($topic_result)
    • mysqli_fetch_array() 는 한번 실행 될 때, 하나의 Data를 Array type으로 return 하고 제거
    • data 가 없다면, False 를 return

 

 

...
<body>
  ...
  <article>
    <?php
    if(!empty($topic)){
    ?>
    <h2><?=htmlspecialchars($topic['title'])?></h2>
    <div class="description">
      <?=htmlspecialchars($topic['description'])?>
    </div>
    <div>
      <a href="modify.php?id=<?=$topic['id']?>">수정</a>
      <form method="POST" action="process.php?mode=delete">
        <input type="hidden" name="id" value="<?=$topic['id']?>" />
        <input type="submit" value="삭제" />
      </form>
    </div>
    <?php
    }
    ?>
  </article>
  ...
</body>
  • $topic 에 Data 가 존재한다면 (empty($topic) == false), 해당 정보를 표기
    • $topic = mysqli_fetch_array($topic_result)
      • mysqli_fetch_array() 는 값이 없을 경우, false 를 return 하는 것을 이용
    • empty(false) == true / empty(true) == false
  • 특정 Data 를 선택 하였을 때, 'id' 값을 GET 으로 전달받아 $topic 에 저장한 후 page 상에 출력

 

 

 


이 글의 모든 사진과 내용의 출처는 생활코딩에 있음을 알려드립니다.

http://www.inflearn.com/course/%EC%83%9D%ED%99%9C%EC%BD%94%EB%94%A9-php-%EA%B0%95%EC%A2%8C/lecture/230?tab=note

 

생활코딩 - PHP 기본 A 부터 Z 까지 - 인프런 | 학습 페이지

지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요....

www.inflearn.com

 

Comments