제목 | form input에서 백슬래쉬 받아오기 | ||
---|---|---|---|
카테고리 | PHP | ||
글쓴이 | 뫄뫄잉뿌 | 작성시각 | 2017/01/16 13:41:37 |
|
|||
안녕하세요, 오랜만에 질문 올립니다. view에서 form태그 내에 input에 \ 이 표시를 포함하여 디비에 검색을 보내는 작업을 하고 있습니다. controller에서 get_post로 받아 다시 view로 보내서 view에서 표시될땐 \를 포함하여 표시되는데
print_r($this->db->_compile_select()); 를 통하여 sql문 확인해봤더니 \를 \\로 표시되서 중간에 \가 \\로 되버리니 검색이 안되는 것 같습니다. $title = str_replace('\\[','\[',$title); $title = str_replace('\\]','\]',$title); 이렇게 억지로 해봤는데도 여전히 \\로 표시됩니다. sql 날릴때 문제인거같은데.. 액티브레코드로 날려서 그런거같기도 하고..
\까지 제대로 표시되기 위한 설정이 필요한가요? |
|||
다음글 | IE11, Edge 브라우저에서 파일명이 한글로 된 경... (7) | ||
이전글 | 기초서 추천부탁드려요 (1) | ||
한대승(불의회상)
/
2017/01/16 14:43:16 /
추천
0
stripslashes 라는 멋진 함수가....
|
뫄뫄잉뿌
/
2017/01/16 14:50:46 /
추천
0
\를 다 없애는게 아니라 살아있어야 합니다. 예를들어 검색어에 \f[\f 이렇게 되어있으면 이 문자가 그대로 sql like문에 들어가야되는데 찍어서 본 바로는 \\f[\\f 이렇게 되어있어서 검색창에서는 같은 문자이나 DB상에서 검색이 안되는 거죵..ㅠㅜ |
한대승(불의회상)
/
2017/01/16 14:59:09 /
추천
0
그럼 addslashes 라는 멋진 함수를.... ㅡㅡ;;;
|
뫄뫄잉뿌
/
2017/01/16 15:06:12 /
추천
0
addslashes를 쓰면 \\\\f[\\\\f 이 되서 더 늘어납니다..ㅜㅜ
|
한대승(불의회상)
/
2017/01/16 15:07:07 /
추천
0
늘어나는게 정상 아닌가요?
|
뫄뫄잉뿌
/
2017/01/16 15:12:30 /
추천
0
제가하고 싶은 건 view단에 input에 \f[\f를 넣어 검색해서 리스트가 나오게 하는 것인데 print_r($this->db->_compile_select()); 로 액티브쿼리를 찍어 보니 $this->db->like('CONTENT', $title); 이부분에 \f[\f가 아닌 \\f[\\f가 들어가 제대로 검색이 안된다는 겁니다. 따라서 \가 늘어나지 않도록 액티브쿼리를 날려야 할 것 같은데 방법이 없는 것인지 해서 여쭈었습니다. |
한대승(불의회상)
/
2017/01/16 15:16:54 /
추천
0
아래 처럼 수정해서 테스트 해보세요 $this->db->like('CONTENT', $title, '', false);
|
kaido
/
2017/01/16 15:17:11 /
추천
0
액티브레코드라서 그렇습니다. 기본적으로 sql 인잭션 방지를 한번 걸어줍니다. 그중 하나가 바로 역슬러쉬 입니다.
가령 쿼리에 임의로 역슬러쉬를 넣고 호출 해서 , 검색 되면 안되는 자료를 포괄적으로 검색 시킨다면 있는 자료 전부 다 보여준다는 의미입니다.
역슬래쉬가 꼭 필요한 사유는 모르겠지만, 가능 하면 넣지 않는 방향이나, input 에서 역슬러쉬를 받지 마시고, 조건에 따라서 쿼리분을 차등을 주시는 방법이 있습니다. |
뫄뫄잉뿌
/
2017/01/16 15:25:39 /
추천
0
@한대승(불의회상)님 해보았으나 바뀌지 않습니다 ㅜㅜ @kaido 그럼 액티브쿼리가 아닌 $this->db->query로 변형시켜보아야 겠네욥.. 시도해보겠습니다. 감사합니다. |
뫄뫄잉뿌
/
2017/01/17 12:53:22 /
추천
0
자답입니다. kaido님께서 말씀해주신 형태로 바꾸고 mysql 쿼리가 역시나 문제더라구요.. \는 addslashes 후에 like '%\\\[a_{2}\\\]%' ESCAPE '|' 로 날려 해결하였습니다. |