0

이미 다른 답변을 확인했지만 아무 소용이 없습니다.Codeigniter 허용되지 않는 문자 대안

저는 다른 개발자가 도망친 직업에 대한 버그를 수정하기 위해 고용되었습니다. 응용 프로그램에 주석 추가 및 주석 기능이 있습니다.

문제는 삭제 의견 부분에 있습니다. 그는 모든 주석이 파이프 문자로 구분 된 단일 셀에 입력되도록 데이터베이스를 설계했습니다. 따라서 주석을 삭제하는 동안 전체 설명을 매개 변수으로 URL에 넣은 다음 모델로 전달하고 데이터베이스에서 제거해야합니다.

나는 이것이 나쁘다는 것을 알고 있지만 전체 기능을 다시 코딩 할 수는 없습니다.

이제 사용자가 "What 's Up?"과 같은 주석을 입력하면 주석 주석 URL에서 "Codeigniter : 제출 한 URI가 문자를 허용하지 않았습니다."가 표시됩니다. 오류.

따옴표를 HTML 문자 엔티티로 변환하려고했지만 다시 허용되지 않는 문자가 포함되었습니다.

누구든지이 문제의 가능한 해결 방법을 제안 할 수 있습니까? 다른 구분 기호 처리에 사용되는 광범위한 PHP 코드를 변경해야하므로 데이터베이스를 재 설계하는 것은 실행 가능한 옵션이 아닙니다. 허용되지 않는 문자 목록을 잘못 쓰는 것도 나쁜 생각입니다.

감사합니다.

답변

2

내가 htmlentities 도움이 될 경우 확실하지 않다 :

그것은 말한다. 매개 변수에 대해서 먼저 urlencode으로 전화 했습니까? 당신은 그들이 데이터베이스에 의해 특수 문자로 취급하는 경우 다음 중 하나에 이스케이프 문자를 추가해야하는 경우

<a href="mycgi?foo=What%27s+Up%3F">

<?php 

$query_string = 'foo=' . urlencode("What's Up?"); 
echo '<a href="mycgi?' . htmlentities($query_string) . '">'; 

?> 

또한 확인하십시오.

예컨대 %가 특수 문자로 취급되면 그 전에 \을 추가해야 할 수도 있습니다.

+0

네, 성공했습니다 !! 약간의 기능으로 놀아야했다. – jahackbeth

3

이 매개 변수를 설정 파일을 열고 찾을 :

$의 설정 [ 'permitted_uri_chars'] = '.! A-Z 0-9 ~ %을 : _() @ & - =?';

요구 사항에 따라 변경할 수 있으며 비워 둘 수 있습니다.
구성 파일의 주석 섹션을 읽으십시오. Leave blank to allow all characters -- but only if you are insane.

+0

나는 내 질문에이 설정을 망쳐 놓는 것이 나쁜 생각이라고 언급했다. 다른 해결 방법은 무엇입니까? – jahackbeth

+0

그것은 codeigniter의 설정 파일입니다. 'allowed_uri_chars' 매개 변수에 새 문자를 추가하면 이전 코딩에 영향을 미치지 않습니다. URL에있는 문자 만 허용합니다. – DS9

+0

응용 프로그램에 이미 잘못된 코딩 방법의 징후가 있습니다. URL에 작은 따옴표 문자를 허용하면 SQL 주입 시도를위한 문이 열리지 않습니다.이 경우 – jahackbeth

관련 문제