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

관리자페이지 상품명 출력부분 특수문자 출력부분 질문있습니다. 채택완료

고오급개발자가되자 5년 전 조회 2,714

위의 사진과 같이 관리자 페이지에서 IT'S SKIN처럼 제품명에 특수문자 '가 들어가면 출력 시에

크롬 개발자툴에서처럼 

</p>

<p>value="伊思[IT" s="" skin]프레스티지="" 로씨옹="" 진생데스까르고="" 140ml'="" </p>

<p>

나타납니다. 상품명을 DB에서 불러올 때 어디서 특수문자가 붙어서오는지 모르겠습니다.

 

아래 코드는 해당 출력부분 소스입니다.

adm/eyoom_admin/theme/basic/skin/shop/itemlist.html.php

</p>

<p>제품명_유형: "<label class='input'><p>한국어<input type='text' name='it_name[<?php echo $i; ?>]' id='it_name_<?php echo $i; ?>' value='<?php echo get_text($list[$i]['it_name']); ?>' required></p><p>중국어<input type='text' name='it_name_cn[<?php echo $i; ?>]' id='it_name_cn_<?php echo $i; ?>' value='<?php echo get_text($list[$i]['it_name_cn']); ?>' required></p><p>영어<input type='text' name='it_name_us[<?php echo $i; ?>]' id='it_name_us<?php echo $i; ?>' value='<?php echo get_text($list[$i]['it_name_us']); ?>' required></p></label><div class='item-type-divider'></div><div class='item-type-box'><div class='inline-group item-type-group'><label class='checkbox' for='it_type1_<?php echo $i; ?>'><input type='checkbox' name='it_type1[<?php echo $i; ?>]' id='it_type1_<?php echo $i; ?>' value='1' <?php echo $list[$i]['it_type1'] ? 'checked': ''; ?>><i></i> <span class='label bg-dark lighter color-white'>히트</span></label><label class='checkbox' for='it_type2_<?php echo $i; ?>'><input type='checkbox' name='it_type2[<?php echo $i; ?>]' id='it_type2_<?php echo $i; ?>' value='1' <?php echo $list[$i]['it_type2'] ? 'checked': ''; ?>><i></i> <span class='label bg-yellow lighter color-white'>추천</span></label><label class='checkbox' for='it_type3_<?php echo $i; ?>'><input type='checkbox' name='it_type3[<?php echo $i; ?>]' id='it_type3_<?php echo $i; ?>' value='1' <?php echo $list[$i]['it_type3'] ? 'checked': ''; ?>><i></i> <span class='label bg-red lighter color-white'>신상</span></label><label class='checkbox' for='it_type4_<?php echo $i; ?>'><input type='checkbox' name='it_type4[<?php echo $i; ?>]' id='it_type4_<?php echo $i; ?>' value='1' <?php echo $list[$i]['it_type4'] ? 'checked': ''; ?>><i></i> <span class='label bg-green lighter color-white'>인기</span></label><label class='checkbox' for='it_type5_<?php echo $i; ?>'><input type='checkbox' name='it_type5[<?php echo $i; ?>]' id='it_type5_<?php echo $i; ?>' value='1' <?php echo $list[$i]['it_type5'] ? 'checked': ''; ?>><i></i> <span class='label bg-purple lighter color-white'>할인</span></label></div></div>",</p>

<p>

 

아래 코드는 get_text 함수입니다.

lib/common.lib.php

</p>

<p>// TEXT 형식으로 변환

function get_text($str, $html=0, $restore=false)

{

    $source[] = "<";

    $target[] = "&lt;";

    $source[] = ">";

    $target[] = "&gt;";

    $source[] = "\"";

    $target[] = "&#034;";

    $source[] = "\'";

    $target[] = "&#039;";</p>

<p>    if($restore){

        $str = str_replace($target, $source, $str);

    }

      

    // 3.31

    // TEXT 출력일 경우 &amp;   등의 코드를 정상으로 출력해 주기 위함

    if ($html == 0) {

        $str = html_symbol($str);

    }</p>

<p>    if ($html) {

        $source[] = "\n";

        $target[] = "
";

    }

    

    return str_replace($source, $target, $str);

}</p>

<p>

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

답변 2개

채택된 답변
+20 포인트
M
5년 전

DB 에 It's 따옴표 값이 들어가게되면 위의 현상이 발생할수 밖에 없습니다.

 

PHP 에서 제공하는 addslashes 함수를 이용하시면 해결됩니다.

 

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

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

특수문자 들어가서 출력을 한다구요?? 

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

답변에 대한 댓글 2개

고오급개발자가되자
5년 전
value="伊思[IT"
DB에 있는 값 IT'S가 되야하는데 IT뒤에 "가 붙어서 伊思[IT까지만 출력합니다.
어디서 '가 "으로 바뀌어서 찍히는지 모르겠어요
릴보이즈
5년 전
addslashes 함수 이용해보세요

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

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

로그인