Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 불법유통근절
- 도구모음
- codeup
- MITRE ATT&CK
- PHP
- 파이썬
- 웹 해킹 입문
- 12기
- 프로젝트
- Los
- 정보보안
- 기타정보
- 여행
- UKPT
- 경기팀
- 화학물질불법유통온라인감시단
- HTML
- 국가정보원
- webhacking
- 대외활동
- 국정원
- Service
- 불법유통
- nurisec
- 연구모임
- 화학물질안전원
- 화학물질
- 국가기록원
- suninatas
- UKPT level
Archives
- Today
- Total
agencies
[프로젝트] 홈페이지 구축 (메인 배경화면) v0.4 본문
소스코드
<nav>
<ul class="menu" style="display:inline-block;">
<li>소식ㆍ정보
<ul class="submenu"><li>공지사항</li>
<li><a href="//agencies.tistory.com" target="_blank">팀 블로그</a></li>
<li></li>
</ul>
</li>
<li>주요활동
<ul class="submenu"><li>자원봉사</li>
<li>서포터즈</li>
<li>정보보안</li>
</ul>
</li>
<li>팀 소개
<ul class="submenu"><li>팀 리더 인사말</li>
<li>슬로건</li>
<li>직무</li>
</ul>
</li>
</ul>
</nav>
<section>
<?php
$last_upload = get_image();
function get_image() {
$upload_dir = "./img/";
$last_image = "";
$images = glob($upload_dir."*.png");
foreach($images as $image){
if(filemtime($image) > filemtime($last_image))
{$last_image = $image;}
}
return $last_image;
}
if(isset($_FILES["file"]))
{ $file = $_FILES["file"];
$file_name = $_FILES["file"]["name"];
$file_tmpname = $_FILES["file"]["tmp_name"];
$file_size = $_FILES["file"]["size"];
$file_ex = pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);
if($file_ex ==="png")
{
if($file_size < 10000)
{
$move = "./img/".$file_name;
move_uploaded_file($file_tmpname, $move);
echo "<script>alert('성공적으로 파일을 업로드했습니다.');window.location.href='/index.php';</script>";
}
else { echo "<script>alert('업로드할 수 있는 파일의 크기가 초과되었습니다.')</script>"; }
}
else { echo "<script>alert('PNG 확장자를 가진 이미지 파일만 가능합니다.')</script>"; }
}
?>
<div class="s1">
<form action="./index.php" method="post" enctype="multipart/form-data" class="img_up">
<label for="file">이미지 선택</label>
<input type="file" name="file" id="file" style="display:none;">
<button type="submit">Upload</button>
</form>
</div>
</section>
<style>
*{margin:0; padding:0;}
/* section 1 */
.s1{width:1050px; height:600px;background-color:black; background-image:url('<?php echo $last_upload; ?>'); margin:0 auto; background-repeat:no-repeat; background-size:contain;}
.img_up{margin-top:560px; padding:10px; float:right; color:lightgreen;}
.img_up button{background-color:white; border:dotted; padding:3px;}
/* 메뉴바 */
nav{text-align:center; margin-top:5px; width:1050px;margin:0 auto; cursor:pointer;}
a{text-decoration:none;}
a:hover{text-decoration:underline; text-underline-position:under;}
a:visited{color:red;}
ul{list-style-type:none;}
.menu > li{float:left; width:350px; background-color:white; height:55px; line-height:55px; font-weight:bold; font-size:20px;}
.submenu{overflow:hidden; height:0;}
.submenu > li{background-color:#FBFBFB; height:35px; font-weight:500; font-size:13px; line-height:30px;}
.menu:hover .submenu{height:110px;}
</style>
이미지 파일을 업로드하면, 최근 업로드 된 이미지를 찾아 배경화면으로 설정합니다.
<?php
$last_upload = get_image();
function get_image() {
$upload_dir = "./img/";
$last_image = "";
$images = glob($upload_dir."*.png");
foreach($images as $image){
if(filemtime($image) > filemtime($last_image))
{$last_image = $image;}
}
return $last_image;
}
?>
get_image() 함수는 최근 이미지 파일의 경로를 반환하도록 합니다.
$upload_dir 변수에는 이미지 파일이 저장된 디렉토리 경로로 설정됩니다.
$last_image 변수는 최근 이미지 파일의 경로를 저장할 수 있도록 하는 변수로 설정됩니다.
glob() 함수를 사용해서 ./img/ 에 있는 모든 .png 확장자를 가진 파일의 목록을 가져옵니다.
foreach 루프를 사용해서 가져온 모든 이미지 파일에 대해 반복을 합니다.
파일의 수정 시간을 확인해서 최근 수정된 이미지 파일의 경로를 $last_image에 저장합니다.
if(isset($_FILES["file"]))
{ $file = $_FILES["file"];
$file_name = $_FILES["file"]["name"];
$file_tmpname = $_FILES["file"]["tmp_name"];
$file_size = $_FILES["file"]["size"];
$file_ex = pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);
if($file_ex ==="png")
{
if($file_size < 10000)
{
$move = "./img/".$file_name;
move_uploaded_file($file_tmpname, $move);
echo "<script>alert('성공적으로 파일을 업로드했습니다.');window.location.href='/index.php';</script>";
}
else { echo "<script>alert('업로드할 수 있는 파일의 크기가 초과되었습니다.')</script>"; }
}
else { echo "<script>alert('PNG 확장자를 가진 이미지 파일만 가능합니다.')</script>"; }
}
?>
만약 파일이 업로드가 된다면,
파일의 이름, 확장자, 크기(등)을 확인합니다.
'Ⅲ. 정보보안' 카테고리의 다른 글
[프로젝트] 홈페이지 구축 (mysql 연동) v0.5 (0) | 2024.02.29 |
---|---|
(중요) [프로젝트] 홈페이지 구축 - 파일 업로드 취약점 (0) | 2024.02.26 |
[프로젝트] 홈페이지 구축 (nav) v0.3 (0) | 2024.02.26 |
[프로젝트] 홈페이지 구축 (php 설치) v0.2 (0) | 2024.02.26 |
[프로젝트] 홈페이지 구축 (아파치 설치) v0.1 (0) | 2024.02.26 |