[php] PHP를 사용한 파일 업로드와 기본 인증 설정
이번 글에서는 PHP를 사용하여 파일 업로드를 구현하고, 기본적인 웹 서버 인증을 설정하는 방법에 대해 알아보겠습니다.
파일 업로드
PHP를 사용하여 파일을 업로드하려면 다음 단계를 따라야 합니다.
- HTML Form 생성
- 파일 업로드 처리 스크립트 작성
- 파일 업로드 폴더 설정
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를 사용한 파일 업로드와 기본 인증 설정에 대해 알아보았습니다. 각각의 기능을 적용하여 웹 애플리케이션을 보안하고 파일을 안전하게 업로드할 수 있습니다.