2017-12-05 9 views
0

저는 Codeigniter 기반 시스템을 구축했습니다.htmlspecialchars() 또는 html_escape() 전체 PHP/Codeigniter 기본 웹 사이트를 적용 할 수 있습니까?

편집 화면에서는 데이터베이스에서 값을 가져 와서 입력 필드에 표시합니다.

예 :

<input type="text" class="form-control" required="" name="tes_title" value="<?php echo htmlspecialchars($tes_info['tes_title']); ?>"> 

은 그래서 일부 값은 큰 따옴표와 작은 따옴표를 포함하고 있기 때문에 htmlspecialchars을 사용했다. 그러나 모든 입력에 수동으로 추가하는 데는 많은 시간이 걸립니다.

htmlspecialchars() 또는 html_escape() 전체 사이트를 적용 할 수있는 방법이 있습니까? 내 말은

도 나는 편의 기능을 쓰기가 <input type="text" class="form-control" required="" name="tes_title" value="<?php echo htmlspecialchars($tes_info['tes_title']); ?>">

+0

당신은이 작업을 수행 할 수 있습니다

편집 응용 프로그램/설정/hooks.php 파일 함수에서

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); $hook['post_controller_constructor'][] = array( 'class' => 'SpecialChar', 'function' => 'remove_specials', 'filename' => 'removespecial.php', 'filepath' => 'hooks' ); 

, 당신은 형태가

이 전 제출 여부를 확인해야 함수는'$ tes_info'에서 리턴합니다. 예 :'function getResults() {(사용자 쿼리) $ result = [(배열의 모든 항목)]; foreach {$ result htmlspecialchars ($ value)} $ result}'를 반환합니다. 이 코드는 작성된대로 작동하지 않지만 아이디어를 얻을 수 있습니다. –

+0

논리를 적용하고 도우미에 넣을 함수를 작성하십시오. 그럼 어디서든 사용할 수 있습니다 –

+0

멋지게 할 수 있습니다! github에 ci를 통합하는 라이브러리가 있습니다. 모든 뷰를 변환 할 준비가되어 있습니다. – Alex

답변

0

로 일해야 <input type="text" class="form-control" required="" name="tes_title" value="<?php echo $tes_info['tes_title']; ?>">를 사용합니다.

<?php 

function e($str) { 
    //return escaped string. 
} 

그리고 필요한 경우 출력에 사용 :

<?= e($foo) ?> 

을하지만 당신의 입력 출력으로 한정 것입니다. 필요한 곳을 탈출하고 적절하게 탈출하십시오.

Codeigniter는 html_escape 도우미 함수가 구워졌으며 htmlspecialchars를 감싸는 래퍼입니다. 또한 입력으로 배열을 사용합니다.

(컨트롤러에서)보기로 전달하기 전에 데이터를 사전 처리 할 수 ​​있습니다. 그러나 혼란스럽고 다루기 힘들어 질 수 있습니다. 여러분이 지나가는 모든 것을 벗어나고 싶지 않을 수도 있습니다.

0

모든 제출마다 후크를 정의 할 수 있습니다.

if ($this->input->post()) {  
    foreach($this->input->post() as $post) 
    $newValue = htmlspecialchars($post); 
} 
+0

html 출력을 이스케이프 처리하는 것은 입력을 필터링/이스케이프 처리하는 것과 상당히 다릅니다. – Progrock