[php] PHP를 사용한 파일 업로드와 기본 인증 설정

이번 글에서는 PHP를 사용하여 파일 업로드를 구현하고, 기본적인 웹 서버 인증을 설정하는 방법에 대해 알아보겠습니다.

파일 업로드

PHP를 사용하여 파일을 업로드하려면 다음 단계를 따라야 합니다.

  1. HTML Form 생성
  2. 파일 업로드 처리 스크립트 작성
  3. 파일 업로드 폴더 설정

HTML Form 생성

<form action="upload.php" method="post" enctype="multipart/form-data">
  Select file to upload:
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="Upload File" name="submit">
</form>

파일 업로드 처리 스크립트 작성

<?php
$targetDir = "uploads/";
$targetFile = $targetDir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($targetFile,PATHINFO_EXTENSION));

// 파일이 이미 존재하는지 확인
if (file_exists($targetFile)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

// 파일 크기 제한
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

// 파일 확장자 제한
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

// 파일 업로드 실행
if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile)) {
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}
?>

파일 업로드 폴더 설정

$targetDir = "uploads/";
if(!is_dir($targetDir)){
  mkdir($targetDir, 0777, true);
}

기본 인증 설정

웹 서버에 기본 인증을 설정하여 특정 디렉토리 또는 파일에 대한 액세스를 제한할 수 있습니다. 예를 들어, Apache를 사용하는 경우, .htaccess 파일을 사용하여 다음과 같이 기본 인증을 설정할 수 있습니다.

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/to/.htpasswd
Require valid-user

위 코드에서 /path/to/.htpasswd는 인증에 사용될 사용자 정보 파일의 경로를 나타냅니다. 사용자 정보 파일은 다음과 같은 형식으로 작성됩니다.

username:password

이제 PHP를 사용한 파일 업로드와 기본 인증 설정에 대해 알아보았습니다. 각각의 기능을 적용하여 웹 애플리케이션을 보안하고 파일을 안전하게 업로드할 수 있습니다.