제목 | 검색시 #문자를 인식할려면 | ||
---|---|---|---|
글쓴이 | kimga | 작성시각 | 2010/05/17 20:53:35 |
|
|||
CI에서 GET 스트링을 인식할수 있는 라이브러리를 설치후 #이 제대로 인식이 되지 않는것을 발견하였습니다. 검색할 단어에 #으로 시작되거나 하면 에러를 뿜어내더군요. 이곳 사이트에서도 #만으로 검색하니 스트링이 아예 존재하지 않는것으로 나옵니다. 이 부분을 해결할 방법이 있는지 궁금합니다.. |
|||
다음글 | phpDesigner 사용자분들 단어단위 삭제 기능아시... (1) | ||
이전글 | php 파일이 ?> 로 닫혀있지 않네요. (3) | ||
변종원(웅파)
/
2010/05/17 21:00:21 /
추천
0
|
kirrie
/
2010/05/17 15:25:42 /
추천
0
다음은 uri와 관련된 rfc 문서의 일부분입니다. ( http://www.ietf.org/rfc/rfc2396.txt )
The angle-bracket "<" and ">" and double-quote (") characters are excluded because they are often used as the delimiters around URI in text documents and protocol fields. The character "#" is excluded because it is used to delimit a URI from a fragment identifier in URI references (Section 4). The percent character "%" is excluded because it is used for the encoding of escaped characters.말하자면 #은 uri schema 가운데서 특별한 목적을 가지고 있기 때문에 일반적인 문자열로 uri 내에서 사용될 수 없다는 의미입니다. (그 외 사용할 수 없는 몇개의 문자가 나옵니다.) #는 흔히 anchor 태그에서 페이지 내의 위치를 지정하는 것으로 사용됩니다. 즉, 물리적인 자원과 대응하는 위치가 아니라 페이지 내에서만 의미를 갖는 한정된 식별자입니다. 그러므로 #을 사용하면 CI나 php가 아니라 아예 웹서버에서 그 뒷부분은 인식을 안해버립니다. #은 웹서버가 아니라 웹브라우져가 인식해야할 식별자기 때문입니다. 예를 들어서 index#page.html 파일을 만들어서 호출해보시면 잘 알 수 있을겁니다. 이 페이지는 404 에러를 냅니다. 분명히 파일은 있는데 말이죠. 실제로 리쿼스트와 리스폰스의 패킷을 떠보면 웹브라우져는 정상적으로 GET /index#page.html 페이지를 호출하는 반면에 웹서버는 # 뒷부분은 fragment idenfitier로 인식하고 index만 찾으려고 하기 때문에 파일을 찾을 수 없다는 에러를 내는 것을 확인할 수 있습니다. 결론은? ㅎㅎ 웅파님 말씀대로 처리를 따로 해서 넘겨야 합니다. base64_encode가 좋은 방법이죠. |
kirrie
/
2010/05/17 15:38:19 /
추천
0
|
보안때문에 그럴겁니다.
액티브레코드를 쓰신다면 당연히 처리가 되서 스트링 자체가 없어질테구요.
주소표시줄에도 마찬가지 입니다. (config.php 의 Allowed URL Characters 참고)
쿼리 날리실때 \# 정도 처리는 하셔야할듯 합니다.