이미지 업로드 시 사진 대신 소스가 표시됩니다.

이미지 업로드 시 사진 대신 소스가 표시됩니다.

QA

이미지 업로드 시 사진 대신 소스가 표시됩니다.

그누보드5(영카트) 버전

5.6.22

본문

2949692104_1766819071.9658.png

view.skin.php


<?php
if (!defined("_GNUBOARD_")) exit;
include_once(G5_LIB_PATH.'/thumbnail.lib.php');
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
?>
<script src="<?php echo G5_JS_URL; ?>/viewimageresize.js"></script>
<article id="bo_v">
    <header>
        <h2 id="bo_v_title">
            <?php if ($category_name) { ?><span class="bo_v_cate"><?php echo $view['ca_name']; ?></span><?php } ?>
            <span class="bo_v_tit"><?php echo get_text($view['wr_subject']); ?></span>
        </h2>
    </header>
    <section id="bo_v_info">
        <div class="profile_info clearfix">
            <strong><?php echo $view['name'] ?></strong>
            <span class="margin-left:20px;"><i class="fa fa-clock-o"></i> <?php echo $view['datetime'] ?></span>
        </div>
        <?php if($view['wr_1']) { ?>
        <div class="view_event_date" style="margin-top:10px; color:#e67e22; font-weight:bold;">
            <i class="fa fa-calendar"></i> 기간: <?php echo $view['wr_1'] ?> ~ <?php echo $view['wr_2'] ?>
            <?php echo ($view['wr_1'] <= G5_TIME_YMD && $view['wr_2'] >= G5_TIME_YMD) ? '<span class="event-ing">진행중</span>' : '<span>종료</span>'; ?>
        </div>
        <?php } ?>
    </section>
    <section id="bo_v_atc">
        <div id="bo_v_con">
            <?php
            // [해결 핵심] 텍스트로 노출되는 HTML 태그를 실제 코드로 복구합니다.
            $content = $view['content'];
            $content = htmlspecialchars_decode($content, ENT_QUOTES);
            $content = html_entity_decode($content, ENT_QUOTES, 'UTF-8');
            // 썸네일 생성 및 HTML 렌더링(1) 적용
            echo get_view_thumbnail(conv_content($content, 1));
            ?>
        </div>
    </section>
    <div id="bo_v_top" class="clearfix">
        <ul class="bo_v_left">
            <li><a href="<?php echo $list_href ?>" class="btn_b01">목록</a></li>
            <?php if ($update_href) { ?><li><a href="<?php echo $update_href ?>" class="btn_b01">수정</a></li><?php } ?>
            <?php if ($delete_href) { ?><li><a href="<?php echo $delete_href ?>" class="btn_b01" onclick="del(this.href); return false;">삭제</a></li><?php } ?>
            <?php if ($write_href) { ?><li><a href="<?php echo $write_href ?>" class="btn_b01">글쓰기</a></li><?php } ?>
        </ul>
    </div>
</article>

write.skin.php


<?php
if (!defined('_GNUBOARD_')) exit;
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
include_once(G5_PLUGIN_PATH.'/jquery-ui/datepicker.php');
?>
<section id="bo_w">
    <form name="fwrite" id="fwrite" action="<?php echo $action_url ?>" onsubmit="return fwrite_submit(this);" method="post" enctype="multipart/form-data" style="width:<?php echo $width; ?>">
        <input type="hidden" name="w" value="<?php echo $w ?>">
        <input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
        <input type="hidden" name="wr_id" value="<?php echo $wr_id ?>">
        <input type="hidden" name="sca" value="<?php echo $sca ?>">
        <input type="hidden" name="sst" value="<?php echo $sst ?>">
        <input type="hidden" name="sod" value="<?php echo $sod ?>">
        <input type="hidden" name="sfl" value="<?php echo $sfl ?>">
        <input type="hidden" name="stx" value="<?php echo $stx ?>">
        <input type="hidden" name="page" value="<?php echo $page ?>">
        <div class="write_div">
            <?php if ($is_category) { ?>
            <select name="ca_name" id="ca_name" required class="frm_input required" style="width:100%; height:40px; margin-bottom:10px;">
                <option value="">카테고리 선택 필수</option>
                <?php echo $category_option ?>
            </select>
            <?php } ?>
            <input type="text" name="wr_subject" value="<?php echo $subject ?>" id="wr_subject" required class="frm_input full_input required" placeholder="제목" style="width:100%; height:40px;">
        </div>
        <div class="write_div" style="margin:15px 0;">
            <input type="text" name="wr_1" value="<?php echo $write['wr_1']??''; ?>" id="wr_1" class="frm_input datepicker" size="15" placeholder="시작일"> ~
            <input type="text" name="wr_2" value="<?php echo $write['wr_2']??''; ?>" id="wr_2" class="frm_input datepicker" size="15" placeholder="종료일">
        </div>
        <div class="write_div"><?php echo $editor_html; ?></div>
        <div class="btn_confirm" style="text-align:center; padding:20px 0;">
            <input type="submit" value="작성완료" id="btn_submit" class="btn_submit" style="width:120px; height:40px;">
            <a href="<?php echo get_pretty_url($bo_table); ?>" class="btn_b01" style="line-height:38px;">취소</a>
        </div>
    </form>
</section>
<script>
function fwrite_submit(f) {
    <?php echo $editor_js; ?>
    return true;
}
$(function(){ $(".datepicker").datepicker({ dateFormat: "yy-mm-dd" }); });
</script>

css


@charset "utf-8";
/* 레이아웃 초기화 및 float 해제 핵심 */
.clearfix::after { content: ""; display: block; clear: both; }
#bo_gall, #bo_v, #bo_w { clear: both; width: 100% !important; margin: 20px auto; padding: 25px; border: 1px solid #ddd; background: #fff; box-sizing: border-box; overflow: hidden; }
/* 카테고리 & 상단 버튼 정렬 */
#bo_cate { margin-bottom: 20px; clear: both; }
#bo_btn_top { margin-bottom: 20px; border-bottom: 1px solid #eee; padding-bottom: 15px; clear: both; }
#bo_list_total { float: left; line-height: 38px; color: #666; font-size: 14px; }
.btn_bo_user { float: right; }
/* 갤러리 리스트 정렬 (list.skin.php) */
#gall_ul { list-style: none; padding: 0; margin: 0 -10px; clear: both; }
.gall_li { float: left; width: 25%; padding: 10px; box-sizing: border-box; }
.gall_box { border: 1px solid #e9e9e9; background: #fff; border-radius: 8px; overflow: hidden; transition: 0.3s; }
.gall_box:hover { border-color: #3a8afd; box-shadow: 0 5px 15px rgba(0,0,0,0.1); }
.gall_img img { width: 100%; display: block; height: auto; }
.gall_text { padding: 15px; border-top: 1px solid #f0f0f0; }
.bo_tit { display: block; font-weight: bold; color: #333; font-size: 15px; margin-bottom: 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bo_date { font-size: 12px; color: #ff5e00; font-weight: bold; }
/* 상세페이지 스타일 (view.skin.php) */
#bo_v_title { padding-bottom: 20px; border-bottom: 2px solid #333; margin-bottom: 20px; }
#bo_v_info { background: #f8f9fa; padding: 15px; margin-bottom: 30px; border: 1px solid #eee; font-size: 13px; clear: both; }
#bo_v_atc { min-height: 300px; padding: 20px 0; clear: both; overflow: hidden; line-height: 1.8; }
#bo_v_con img { max-width: 100% !important; height: auto !important; display: block; margin: 20px auto; }
/* 하단 버튼 및 공통 버튼 */
#bo_v_top { clear: both !important; padding-top: 25px; border-top: 1px solid #eee; margin-top: 40px; }
.bo_v_left { list-style: none; padding: 0; margin: 0; }
.bo_v_left li { display: inline-block; margin-right: 5px; float: left; }
.btn_b01, .btn_admin, .btn_submit { 
    display: inline-block; padding: 0 15px; height: 38px; line-height: 36px; border: 1px solid #ccc; 
    background: #fff; color: #333 !important; text-decoration: none; font-size: 13px; border-radius: 4px; 
}
.btn_submit { background: #3a8afd; color: #fff !important; border-color: #2e7be5; }
/* 반응형 모바일 */
@media (max-width: 768px) { .gall_li { width: 50%; } }

이 질문에 댓글 쓰기 :

답변 3


<?php
// [해결 핵심] 텍스트로 노출되는 HTML 태그를 실제 코드로 복구합니다.
$content = $view['content'];
$content = htmlspecialchars_decode($content, ENT_QUOTES);
$content = html_entity_decode($content, ENT_QUOTES, 'UTF-8');
// 썸네일 생성 및 HTML 렌더링(1) 적용
echo get_view_thumbnail(conv_content($content, 1));
?>

 

범인은 이중에 있습니다.


$content = $view['wr_content']; // wr_content로 해보세요
//$content = htmlspecialchars_decode($content, ENT_QUOTES); 하나씩 없애보세요
//$content = html_entity_decode($content, ENT_QUOTES, 'UTF-8'); 하나씩 없애보세요

echo get_view_thumbnail(conv_content($content, 1));
이것도 안되면 
echo $content 이렇게 해보세요

$content = $view['wr_content']; // wr_content 이 소스로 수정하니 바로 되었네요 나머지
//$content = htmlspecialchars_decode($content, ENT_QUOTES); 하나씩 없애보세요
//$content = html_entity_decode($content, ENT_QUOTES, 'UTF-8'); 하나씩 없애보세요
두개는 없애도 되겠죠?

/data 폴더의 권한을 707로 다시 넣어보시겠어요?

선생님 f12눌러ㅅ확인해보면 HTML이 중간에 깨져서 이미지 태그가 망가진 상태로 확인됩니다.

<section id="bo_v_atc">
        <div id="bo_v_con">
            <p><img src="" alt="<A HREF=">https://shooter.dothome.co.kr/data/editor/2512/ebddb204e82632cdf0142c4f40d102d3_1766818068_7013.jpg" title="ebddb204e82632cdf0142c4f40d102d3_1766818068_7013.jpg"><br style="clear:both;"> </p>        </div>
    </section>

하여

혛ㄴ제 src="" 이미지 주소가 비어있고 그리고 alt 속성안에 html 문자 그대로 들어가 있어요 실제로 url 태그밖으로 나와 잇다라는뜻입니다.

하여

뷰페이지에서 <?php echo get_view_thumbnail(conv_content($view['content'], 1)); ?> 이런식으로  되어있는지 확인해보시고 content = htmlspecia 이런 디코딩 코드느 ㄴ전부삭제 하시기바랍니다.

제일 빠른 확인방법은 스킨을 다른 스킨으로 변경해서 테스트 해보시기 바랍니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 129,664 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT