2010-07-09 2 views
2

안녕 얘들 아,Codeigniter의 깨끗한 html 입력

나는 CodeIgniter를 사용하여 응용 프로그램을 작성하는데 문제가 발생했습니다. 나는 사용자가 jwysiwyg.jquery에 의해 구동되는 간단한 편집기를 사용하여 텍스트를 넣는 텍스트 영역이있는 양식을 가지고있다. 문제는이 입력을 가비지 코드 (Word에서 직접 붙여 넣기와 함께 제공되는 링크)에 정리해야한다는 것입니다.

양식이 규칙으로, CodeIgniter의에서 form_validation 라이브러리와 검증 :

array(
'field' => 'job[description]', 
'label' => 'Description', 
'rules' => 'trim|required|callback_clean_html' 
), 

그런 다음 나는 단순히 않는 clean_html 방법을 가지고 :

return strip_tags($text,'<a><p><br><strong><em><h3><h4><h5><ul><ol><li>'); 

문제는이 때문이다 단순히 무시되고 원본 텍스트가 데이터베이스에 삽입됩니다. 메서드가 실행됩니다 (테스트했습니다). 콜백 함수가 TRUE 또는 FALSE를 반환해야하기 때문에 호출해야하지만 xss_clean은 BOOL을 반환하지 않습니다. 이 문서는 그다지 도움이되지 않습니다.

아무튼?

미리 감사드립니다.

+0

라이브러리에서 form_validation.php를 사용하지 말고 개별적으로 각각을 작성하는 것이 좋습니다. – ggfan

답변

1

form_validation 콜백은 bool을 반환해야한다고 생각합니다. form_validation은 대개 양식을 다시 제출하기 위해 사용자에게 오류 메시지를 표시해야 할 때 가장 유용합니다. 준비 함수는 편리 할 수 ​​있지만 유효성을 검사 할 필요는 없습니다. 양식을 제출 한 후 db로 보내기 전에 제출 된 문자열을 strip_tags 함수를 통해 전달하는 것은 어떻습니까?

+0

나는 그것을 할 것입니다. 나는 모든 데이터를 한 곳에서 처리하는 것이 좋을 것이라고 생각했습니다. 감사합니다. –

0

규칙에서 callback_을 삭제 해 보셨습니까? trim과 같은 일반적인 PHP 함수를 사용할 수 있습니다.

0

뭔가 AI는 언제나 이중 안전을 위해 수행 입력에 대한 규칙을 설정 한 후 나는 또한 가

나도 상황에 실행 한

HTML을 빼내야 즉,이

`$string = filter_var($string, FILTER_SANITIZE_STRING);` 

를 통해 실행 최근에 입력이 설정된 규칙을 완전히 무시하는 경우.

0

xss_clean 및 기타 CI 유효성 검사 함수는 비 bool 값을 반환합니다. 방금 CI 버전 1.7.2에서 다음 콜백 함수를 테스트했습니다.

function test_string_change($str) 
{ 
    return "$str **"; 
} 

callback_test_string_change를 사용하여 문자열이 성공적으로 변경되었습니다. 1.7.0에서 콜백 함수에 몇 가지 문제가 있다는 것을 알고 있습니다. 최신 버전을 사용하고 있습니까?

0

게시 한 항목에서 정상적으로 작동합니다. "callback_"접두어와 반환 값이 모두 정확합니다. 유효성 검사 메소드는 비 bool을 리턴 할 수 있으며 값을 대체합니다. form_validation 문서를 확인하십시오.

그래서 문제는 게시하지 않은 코드의 일부 위치에 있어야합니다.