셀렉트 체크박스 input value 값에 특수문자 입력 질문 다시 드려요

셀렉트 체크박스 input value 값에 특수문자 입력 질문 다시 드려요

QA

셀렉트 체크박스 input value 값에 특수문자 입력 질문 다시 드려요

본문

다중카테고리 mc tools 소스입니다

원제작자분이 요즘 바쁘신지 질문에 답변이 없으신 듯 합니다 ㅠㅠ

 


<?php
/**
 * 목록보기 스킨.
 */
use mc\Board;
 
/**
 * 목록 분류형 출렷 기본 스킨.
 *  \mc\Board $mc_board
 *  array $params
 *  array 검색폼에서 넘겨야할 파람제출.
 */
return function (Board $mc_board, array $params) {
    $inputs = $mc_board->getInputs();
    $config = $mc_board->getConfig();
    $search = array();
 
echo '<div style="">';
echo '<form>';
echo '<input type="hidden" name="bo_table" value="' . $config['bo_table'] . "추가url" '"/>';
 
// .......중략
 

 

 

마지막 줄이 체크박스 클릭시 input 값을 가져와서 url을 뿌려주는 소스인 듯 합니다..

위 추가url 자리에 텍스트를 더 넣으려 하는데

다른 일반 문자는 정상 출력되고 '%' 나 '=' 등의 특수문자만 주소창에 '%26', '%3D' 이런 식으로 출력되네요 ㅠㅠ 

검색으로 encodeURIComponent 함수를 이용하는 방법도 있다고 찾긴 했습니다만 적용을 못하고 있습니다;;

 

url에 고정적으로 특문 포함 텍스트를 추가하고 싶은데 괜찮은 방법이 있다면 조언 부탁드려요 ㅠㅠ

이 질문에 댓글 쓰기 :

답변 2

주소창의에서 보내는 요청값에 특수문자가 있는경우 해당방식으로 변환되는것이 정상입니다.
주소창에서 특수문자는 구분자로써 용도가 있기 때문에 해당하는 특수문자가 값으로 전달될때는 다른형식으로 변환되게 되어있습니다.
URL에 사용되는 특수문자를 변환하지 않고 값으로 전달하는것은 불가능한걸로 알고 있습니다.

base64 같은것으로 인코딩을 해서 추가해주시고

받을때도 base64 로 디코딩을 해주시면 됩니다.

예) &aaa=가나다=+마바  즉 url 변수 aaa 의 값 가나다=+마바 에서 값부분을 인코딩해서

aaa=abcDeXadiesg 식으로 인코딩 해서 보내고 받아서 디코딩 하면 되요.

한가지 중요한 함정이 있는데.

base64로 인코딩되면 +/= 문자가 생기는 경우가 있으므로 이 문자들을 잡아내서 다른문자로 바꾸어 주어야 합니다. 받을 때는 다시 환원 시키고요.

 

정리하면 변수값을 base64로 인코딩하고 특문을 다른 문자로 치환해서 전송하고

받으면 치환된 특문을 환원시킨후에 base64로 디코딩해서 사용하시면 됩니다.

 

그런데 url로 보내면 자동으로 url 인코딩/디코딩이 될텐데??? 무슨짓을 하신것인지요???

1. echo '<input type="hidden" name="bo_table" value="' . $config['bo_table'] . "추가url" '"/>';
2. echo '<input type="hidden" name="bo_table" value="' . $config['bo_table'] .'"/>"추가url"';

1번처럼 인풋값 안에 있으면 '&' 기호가 '%26' 으로 인코딩되어 나오고
2번처럼 밖에 있으면 주소창이 아니라 체크박스 옆에 특수문자 정상적으로 나옵니다..

그리고 심지어 input에서 넘어온 값을 $변수 처리하여 그걸 다시 한번 url디코딩을 해도 결과는 마찬가지더라고요...

일단 펫시님 말처럼 base64를 이용해서 한번 실행해보겠습니다!
그래도 안되면 볼피드 님 말처럼 url로 가는 문자라서 아예 방법이 없는걸까요ㅠㅠ

자체 해결했습니다!
엄청 간단한 것이었는데 질문을 바보같이 해서 답변 주시는 분들도 갈피를 못 잡으신 듯 합니다 ㅠㅠ 걍 고정 url변수를 추가하는거라고 질문했으면 되는건데...

추가 url도 변수 형태였기 때문에 밑에 걍 echo '<input type= name= value=>'; 값만 한번 더 넣으면 되는 것이었네요.....;;; 부끄럽습니다

먼저 답변주신 볼피드님께 채택 드리겠지만 펫시님도 소중한 답변 정말 감사드려요!

답변을 작성하시기 전에 로그인 해주세요.
전체 59,518
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT