이미지 업로드 시 사진 대신 소스가 표시됩니다.
관련링크
본문

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 이렇게 해보세요
/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 이런 디코딩 코드느 ㄴ전부삭제 하시기바랍니다.
제일 빠른 확인방법은 스킨을 다른 스킨으로 변경해서 테스트 해보시기 바랍니다.