[Normaltic's 취업반 과제] 게시판에 이미지 / 파일 등록하기

2024. 5. 7. 17:27정보보안 및 해킹/Normaltic's 취업반 과제

write_board.php - 파일 올리는 버튼 추가 및 form태그에 enctype= "multipart/form/data" 추가. 이거 없으면 $_FILES 작동 안 한다. 이것 때문에 반나절 날림..

[생략]

<form action="" method="POST" enctype="multipart/form-data">

[생략]

 <label for="reviewimage">관극 사진</label><br>
          <input type="file" name="reviewimage"><br>
          
          [생략]
          
          <button class="submit-button" name="write" value="writereview" type="submit">등록하기</button>
          <?php
          if (isset($_POST['write'])) {
            // echo "here";
            
            write_watched_review($_POST['watcheddate'], $_POST['category'], $_POST['watchedname'], $_POST['watchedreview'], $_FILES['reviewimage']);
          }
          ?>
          
          [생략]

write_board_func.php - 클라이언트로부터 올릴 이미지 경로를 받아서 상대경로로 DB에 업로드. 서버에는 image라는 폴더 안에 클라이언트로부터 받은 이미지를 넣어두고 관리 하게 될 것. move_uploaded_file은 클라이언트로부터 올릴 파일을 전송받아 임시 파일을 만든 후 그 경로를 올림.

<?php
require_once('connect_db.php');

function write_watched_review($watched_date, $category, $name, $review, $review_image)
{
  ini_set('display_errors',1);
 
  $msg = "";
  $table_name = "category_table";
  $filename = $review_image["name"];
  $tempname = $review_image["tmp_name"];
  
  $folder = './image/' . basename($filename);
    
  $sql_query = "INSERT INTO $table_name VALUES ('$watched_date', '$category', '$name', '$review', '$folder')";
  echo $sql_query."<br>";
  $sql_res = mysqli_query(connect_db(), $sql_query);
  echo $tempname ."<br>";
  echo $folder;
 
  if (move_uploaded_file($tempname, $folder)) {
    echo "<h3>  Image uploaded successfully!</h3>";
} else {
  //  error_reporting(E_ALL);
  // error_reporting(0);
    echo "<h3>  Failed to upload image!</h3>";
}

  if ($sql_res) {
    refresh_auto_indrement_num();
  }
}
?>

get_category_list.php - 이름과 보았던 날짜만 띄웠던 관극 게시판에 사진도 함께 띄울 수 있도록 업데이트

[생략]

 echo $sql_row['name'] . " " . $sql_row['watched_date'] . "<br>";
    if($sql_row['review_image'])
    {
    echo "<img src=". $sql_row['review_image'] .">";
    }
    
    
    [생략]