테스트 사이트 - 개발 중인 베타 버전입니다

파일을 업로드 할때 업로드제한을 주면 경고메세지 나오게 하려면? 채택완료

사랑이11 10년 전 조회 3,418

지금 제가 파일을 업로드 하는것을 400kb로 줬거든요.

근데 이미지를 400KB로 주면 이미지가 등록되고, 400KB이상의 파일을 넣으면 그냥 경고메세지가 뜨지 않고 그냥 글쓰기가 되더라구요.  

물론 이미지는 올라가지 않았지만, 방문자들은 왜 이미지 올라가지 않았는지 모르잖아요.

경고메세지가 떠서 글쓰기가 안되게 할수 없을까요?

그리고 파일유형을 jpg,png,gif 이거세개 파일만 허용되게요. 

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
thisgun
10년 전

add_action 함수 에 대한 워드프레스 codex

https://codex.wordpress.org/ko:%ED%95%9C%EA%B5%AD%EC%96%B4/add_action" target="_blank" style="color: rgb(0, 0, 0); text-decoration: none;">https://codex.wordpress.org/ko:%ED%95%9C%EA%B5%AD%EC%96%B4/add_action

 

위의 문서의 내용을 참고하여 아래와 같이 코드를 작성해야 합니다.

 

gnupress/bbs/write_update.php 상단에 아래 코드 추가

</p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">do_action('gnupress_write_update', $board, $is_admin);</span></font> </p><p style="word-break: break-all; color: rgb(80, 80, 80); font-family: 돋움, Dotum, sans-serif; font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">

 

사용하시는 테마의 functions.php 에 아래 내용을 추가합니다.

</p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">add_action('gnupress_write_update', 'g5_write_update_check', 10, 2);</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">
</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">function g5_write_update_check($board, $is_admin=false){</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">
</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">    if( $is_admin ){    //관리자는 제외한다.</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">        return;</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">    }</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">
</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">    if( isset($_FILES['bf_file']) && !empty($_FILES['bf_file']) ){    //업로드한 파일이 있다면</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">        for ($i=0; $i<count($_FILES['bf_file']['name']); $i++) {</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">            $filesize  = $_FILES['bf_file']['size'][$i];</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">
</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">            if(!$filesize){ //파일사이즈가 없으면</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">                continue;</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">            }</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">            $filename  = g5_get_safe_filename($_FILES['bf_file']['name'][$i]);</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">            </span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">            if ($filesize > $board['bo_upload_size']) {     //파일 사이즈를 체크</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">                $file_upload_msg = sprintf(__('Because the capacity of a file %s (%s byte) is set on the board ( %s byte) values are not uploaded to the greater than upload failed.\\n', G5_NAME), $filename, number_format($filesize), number_format($board['bo_upload_size']));  //$filename 파일의 용량(number_format($filesize) 바이트)이 게시판에 설정(number_format($board['bo_upload_size']) 바이트)된 값보다 크므로 업로드 하지 않습니다.\\n'</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">                g5_alert($file_upload_msg);</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">                exit;</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">            }</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">            if (!preg_match("/\.(gif|jpe?g|png)$/i", $filename)) { //jpg,png,gif 만 허용</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">                g5_alert("jpg,png,gif 파일만 올릴수 있습니다");</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">                exit;</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">            }</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">        }</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">    }</span></font></p><p style="word-break: break-all;"><font color="#505050" face="돋움, Dotum, sans-serif"><span style="font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">}</span></font></p><p style="word-break: break-all; color: rgb(80, 80, 80); font-family: 돋움, Dotum, sans-serif; font-size: 14.004px; letter-spacing: -0.01px; line-height: 25.2072px;">

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

사랑이11
10년 전
이렇게 하니깐 되네요. 감사합니다. 근데 마지막으로 하나 더 물어봐도 될까요?
현재 이렇게 하니깐 경고창이 나와서 되돌가니깐 작성한 글이 다 없더라구요.
작성했던 데이터는 남길수 없을까요?
t
thisgun
10년 전
그렇게 하려면 매우 많이 코드를 추가해야 합니다만,

너무 복잡하므로 저두 더 이상 코드를 못 적겠습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인