2014-06-21 3 views
0

Codeigniter 프레임 워크에서 개발 된 웹 사이트의 경우 ACE Editor을 사용하고 있습니다. 문제는 양식을 제출 한 후 일부 태그 속성이 제거 된 것입니다.스타일 속성 및 공백에서 PHP로 html 코드 게시가 실패합니다.

HTML :

<form enctype="multipart/form-data" method="post" action="<?php echo site_url('admin/slider/populateFile')?>"> 
<div id="e1" style="display: none;"> 
    <?php if(isset($sliderHTML)) { echo $sliderHTML; } ?> 
</div>       
<textarea class=" form-control" id="editorTextarea" name="sliderHTML" type="text" rows='20' wrap="off"> 
    <?php if(isset($sliderHTML)) { echo $sliderHTML; } ?> 
</textarea>        
<pre id="editor"></pre> 
</form> 

PHP :

<img class="ls-l" style="top:195px;left:50%;white-space:nowrap;" data-ls="offsetxin:0;delayin:1720;easingin:easeInOutQuart;scalexin:0.7;scaleyin:0.7;offsetxout:-800;durationout:1000;" src="http://localhost:8080/afa/application/views/images/upload/slider/4978d-s1.jpg" alt=""> 

<p class="ls-l" style="top:150px;left:116px;font-weight: 300;height:40px;padding-right:10px;padding-left:10px;font-size:30px;line-height:37px;color:#ffffff;background:#82d10c;border-radius:3px;white-space:nowrap;" data-ls="offsetxin:0;durationin:2000;delayin:1500;easingin:easeOutElastic;rotatexin:-90;transformoriginin:50% top 0;offsetxout:-200;durationout:1000;"> 
       FEATURES 
</p> 

그러나, 출력이 내가 코드 편집기에서 작성하는 노력하고있어 예입니다

function populateFile() 
{ 
    $sliderHTML = $this->input->post('sliderHTML'); 
    //echo $sliderHTML; 
    $filePath = 'application/views/admin/slider/sliderHTML.txt';   
    write_file($filePath, $sliderHTML, 'w');   
    redirect('admin/slider', 'location'); 
} 

같이됩니다 :

<img class="ls-l" data-ls="offsetxin:0;delayin:1720;easingin:easeInOutQuart;scalexin:0.7;scaleyin:0.7;offsetxout:-800;durationout:1000;" src="http://localhost:8080/afa/application/views/images/upload/slider/4978d-s1.jpg" alt=""> 
    <p class="ls-l" 300;height:40px;padding-right:10px;padding-left:10px;font-size:30px;line-height:37px;color:#ffffff;background:#82d10c;border-radius:3px;white-space:nowrap;" data-ls="offsetxin:0;durationin:2000;delayin:1500;easingin:easeOutElastic;rotatexin:-90;transformoriginin:50% top 0;offsetxout:-200;durationout:1000;"> 
       FEATURES 
    </p> 

img의 스타일 속성이 제거되었으며 <p>에 대해서도 발생하지만 font-weight: 이후에는 멈 춥니 다. 나는 이유를 모른다.

어떤 아이디어?

편집 : 마지막으로 나는 이것이 코드 편집기와 아무 관련이 없다는 것을 알고있었습니다. 문제는 Codeigniter의 xss_filtering 및 this answer works for me입니다. :)

+0

의 장소에 "</textarea><script>alert('all your passwords belong to us')</script>"을 넣어

시도는 나에게 보인다. 그것은 당신의 코드를 파싱하려고 시도하는 것 같지만 실패합니다. 어쩌면 그것은 임베디드 CSS를 허용하지 않으며 그것을 없애려고 노력하고 있지만, 실패하고 있습니다. 어쩌면 CSS를 스타일 시트로 옮기려고하는 것일 수도 있습니다. 나는 그냥 수락에 속이는 여분의 공간을 추가하려고합니다. 또한 요소에 ID를 부여하고 CSS를 스타일 시트에 넣을 수 있습니다. – Qaz

+0

글쎄, 난 편집기없이 텍스트 영역을 사용하려고하고 ckeditor (내가 소스에서 썼다)를 사용했지만, 이것은 나에게 같은 결과를 주었다. – Yasmeen

+0

그리고이 인라인 스타일의 경우 인라인해야합니다. 이렇게 사용해야하는 다른 곳에서 사용하기 때문입니다. : \ – Yasmeen

답변

0

나는 특히 에이스에 익숙하지 않다. (나는 Wysihtml5를 좋아한다.) 나는 공통점이 있다고 생각한다.

Wysihtml5 strips html (선택할 수 있습니다). html 출력이 깨끗한 지 확인합니다.

간단히 말해서, 그것은 기능이고 분명히 스타일은 허용되지 않습니다. 이것을 허용해야합니다 (옵션이있는 경우)

+0

나는 [documentation] (http://ace.c9.io/#nav=api&api=editor)에서 이와 같은 것을 찾았지만 여기서 상황과 관련된 것을 찾지 못했습니다. – Yasmeen

+0

검색해 보았지만 찾지 못했습니다. 그러나 CI는 보낼 대상과 삭제할 대상을 선택하지 않습니다. 그것은 좋은 편집장의 공통된 기능이므로 왼쪽 고환을 걸었습니다. 계속 검색하거나 대안으로 전환하십시오.그것은 거기에 있어야합니다 – Matt

+0

당신은 다른 질문을 게시하는 방법에 대해 생각해야합니다 : 스타일 태그를 사용하는 방법 에이스 편집기입니다 – Matt

0

$sliderHTML의 값을 htmlspecialchars으로 이스케이프 처리해야 문서에 추가 할 수 있습니다. 그렇지 않으면 실제 태그가 만들어지고 페이지가 손상됩니다. 에디터가 버그처럼 $sliderHTML