2012-04-21 2 views
0

다른 파일로 리디렉션해야하는 PHP 파일이 있지만 두 번째 파일에 배열을 전달해야합니다. 어떻게해야합니까?두 PHP 파일 사이에 배열을 전달하십시오.

나는 이것이 잘못되었다는 것을 알고 있지만 논리적으로 이와 비슷한 것이 필요하다.

<?php 
     $arr = array('this'=>'is', 'some'=>'stuff'); 
     header("someurl.php", vals=>$arr); 
?> 
+0

"파일 간 전달"이란 무엇입니까? –

답변

4

$ 배열을 노출하지 않으려면 PHP inbuild 세션 지원을 사용해야합니다.

session_start(); // DO CALL ON TOP OF BOTH PAGES 
$_SESSION['array'] = $array; 
echo $_SESSION['array']; // GIVES SAME $array FOR BOTH PAGES 
6

사용 http_build_query :

당신이 헤더를하지 어떻게
header("Location: someurl.php?" . http_build_query($arr)); 
5

. 그것은이 단지 URL에게 그것의 본래 리디렉션이 POST를 할 수 없어

someurl.php?vals=Array 

참고 generat라는 것, 그러나

header("Location: someurl.php?vals=$arr"); 

일해야 할 것이다. 새로운 GET 요청이 발생합니다. 즉, URL에 데이터를 전달해야합니다. 매우 큰 URL이있는 경우 URL의 길이 제한이 있으므로 거의 대부분을 잃을 수 있습니다. 이 짧은 사람이 있다면

그러나이 같은 시도 할 수 있습니다 :

$url = 'someurl.php?vals=' . url_encode(serialize($arr)); 
header("Location: $url"); 

을하고 작동 바랍니다.

+0

정확하게 !! 이것은 최고의 대답입니다! 대부분의 devs가 가지고있는 일반적인 오해. – arijeet

+0

'base64_encode'가 더 좋은 옵션이 아니겠습니까? 나는'urlencode'가 base64보다 길이 비율 속성이 더 나쁘다고 생각한다. (base64는 33 %라고 나는 믿는다 - 나는 그것을 통해'urlencode'를 쉽게 볼 수있다). 또한, 간단한 데이터를 가지고 있다면 직렬화는 약간 과잉이다. – Halcyon

+0

url_encode가 아닌'urlencode' ... –

3

세션 또는 요청에 배열을 저장 한 다음 검색 할 수 있습니다. 다른 요청 인 경우 세션에서해야합니다.

$ _SESSION [ 'myarray'] = $ array_you_want_to_store;

그리고.

$ array_you_want_to_retrieve = $ _SESSION [ 'myaarray'];

+0

사용자가 탭 브라우징 (= everyone)을 사용하고 한 번에 여러 링크를 클릭하면 상당한 문제가 발생합니다. – Halcyon

+0

네, 맞습니다. –

관련 문제