CI 묻고 답하기

제목 길이가 긴 배열을 url로 보낼 때 방법
카테고리 CI 2, 3
글쓴이 정수리 작성시각 2018/05/28 09:27:20
댓글 : 8 추천 : 0 스크랩 : 0 조회수 : 14959   RSS

결과 데이터를 showPay함수에 다시 보낼려고 합니다.

 

그런데 결과데이터가 배열로

 

길이가 많이 길어서;;(한 index당 50개정도 되네요 ㅜㅜ)

 

json_encode함수나 serialize함수를 사용해서

 

url에 보낼려고 하면

 

Request-URI Too Large
The requested URL's length exceeds the capacity limit for this server.

 

이 에러가 출력이 됩니다,

 

요청url에 너무 길다는 뜻같은데요;;

 

어떻게 해야 길이가 긴 배열을 showPay 함수에 보낼수 있을까요??

 

현재 생각 하는 것으로는 

 

url로 값을 전달하지 않고

 

바로 밑에 form안에 list형태로 출력하는 할려고 하는데 그러기에는

 

<input type="hidden"> 태그 너무 많아지는게 좀 그러긴 하네요 ;;

 

showPay 함수에  길이가 긴 배열을 전송할수 있는 방법이 있을까요??

 

function showPay($params='')
	{	
		
		if($_FILES) {
			
			//showArray($_FILES['userfile']);
			$functionData = $this->functions->getFiles($_FILES['userfile']);
			
			$payData =  $this->_loadFile($functionData, $this->data['sheetName']);

			if(empty($payData)) {

					echo "
				<meta http-equiv='Content-type' content='text/html; charset=utf-8'>
				<script>
					alert('시트가 일치하지 않거나 데이터가 없습니다.');
					location.href='".base_url()."/search/paydata/showPay';
				</script>";
			}
			else
			{
               
               @_setPayDate함수에서 업로드한 파일의 데이터를 가져와 반환합니다.
				$result = $this->_setPayData($payData);

                @result에 결과 데이터가 배열형태로 들어 있습니다.
				if(count($result)>1) {
					
					$test = urlencode(serialize($result));



					$resultMessage['message'] = '등록되었습니다.';
					$resultMessage['url'] = '/search/paydata/showPay/'.$test;
                     
                   @'등록되었습니다'라는 문구와 함께 showPay함수로 결과데이터를 전송합니다.
					echo resultMessage($resultMessage);	

				}
				else
				{
					$resultMessage['message'] = '등록되었습니다.';
					$resultMessage['url'] = '/search/paydata/showPay';

					echo resultMessage($resultMessage);

				}
			}
			

		}
		

		$prints['js'] = getJs('payData');

		$this->load->view('regitster/paydata', $prints);
	}

 

 다음글 or_like 사용관련 문의 (2)
 이전글 헤더에 값을 전달하기 (1)

댓글

한대승(불의회상) / 2018/05/28 09:32:17 / 추천 0
POST로 바꾸세요.
정수리 / 2018/05/28 09:41:26 / 추천 0

@한대승

어디부분을 post로 바꿔야 된다는 말씀이실까요??

 

제가 실수로 코드에서 한부분을 빼먹었는데

 

현재 form을 통해 업로드할 파일을 올리면

 

_setPayDate 함수에서업로드한 파일의 데이터를 가져와 반환합니다.

 

반환한 데이터를 다시 showPayDate에 보낼려고 합니다.

 

업로드 파일을 form 통해 보낼때는 post를 사용하고 있습니다.

양승현 / 2018/05/28 09:54:40 / 추천 0

GET방식으로는 512byte밖에 못보내니 POST로 바꿔야 하겠네요.

받아서 처리하는 페이지에서도 긴 데이터가 들어올걸 대비하여 POST로 넘어온 데이터를 처리하는 형태가 되어야 겠죠?

당연히 POST로 보내야 할곳은 GET으로 보내는 곳이겠지요?

정수리 / 2018/05/28 10:01:08 / 추천 0

@양승현

답변감사합니다.

아직 제가 많이 부족해서 그런지

POST형태로 바꿔서 보내라고 말씀하셨는데

어느부분에서 POST로 형태로 바꿔서 보내야 하는걸까요?

 $resultMessage['url'] = '/search/paydata/showPay/'.$test;

이 부분을 post형태로 바꿔서 보내라는 말씀이실까요?

제가 아는 수준에서는 

url을 ?이름=값

이러한 get형태로만 보낼주 아는게 다여서;;

post형태로 바꿔야 한다면 어떻게 바꾸는걸까요??;

구글에서 어떤 키워드로 검색하면 찾을수 있을까요?

양승현 / 2018/05/28 14:14:26 / 추천 0

아.. 그렇군요. 

값을 보낼때 어떻게 보내는지부터 확인하셔야 할거 같네요.

ajax로 client딴에서 보내는 거라면 javascript로 처리되어있을거고요. 

html딴에 버튼방식이면 <form>태그로 되어있을거구요.

php딴에 백앤드 방식으로 서버단에서 보내는거라면 curl등으로 보낼 것입니다.

 

GET방식으로 어느소스 어디에서 보내는지를 먼저 확인해 보시면, 거기에 GET방식으로 되있는게 있을겁니다.

url부분에 abc.com?a=1&b=2&C=3 이런형태의 url이라면 GET방식인게지요.

POST방식은 html에서 값을 보낼때 보통 abc.com/abc/cde 이런식의 url을 가지고

<input type="hidden" name="abc" value=""> 와 같은 보낼값을 input 태그로 지정하여 값을 보냅니다. 

우선은 GET으로 보내는곳이 어떻게 구현이 되어있는지부터 확인하시고.. ajax인지 html에서 보내는건지 curl등으로 백단에서 보내는지를 찾아보시고 그에 따라 구글링하셔서 찾아 보시면 되겠습니다.

한대승(불의회상) / 2018/05/28 15:18:32 / 추천 0
php프로그램 내에서 보내시는거라면 curl 검색해 보세요.
정수리 / 2018/05/28 16:16:18 / 추천 0

@한대승

답변감사합니다.

다행히 php프로그램내에서 보내는거라

curl를 통해 해결하였네요 ㅎㅎ 감사합니다.

정수리 / 2018/05/28 16:16:53 / 추천 0

@양승현

답변 정말 감사합니다.

php프로그램내에서 보내는 것이기에 curl를 사용하였습니다.