사용 - php var_dump 란



배열을 다른 페이지로 보내는 방법은 무엇입니까? (6)

배열을 json_encode() 한 다음 POST 요청의 문자열로 전달할 수 있습니다. 여러 번 사용했습니다. 젊은 젖니처럼 매회 작동합니다.

https://ffff65535.com

배열을 다른 페이지로 보내려고합니다.

내가 전에 시도한 것은 :

페이지 1

<input type='hidden' name='input_name' value='<?php print_r($array_name); ?>' />

그리고 page2

<?php 
$passed_array = $_POST['input_name'];
?>

이제 $passed_array 배열처럼 어떻게 만드나요?

아니면이 문제를 해결하는 다른 방법을 알고 있습니까?

고마워, 마이크.

편집 : 내가 세션과 쿠키를 피하기 위해 필요하기 때문에 내가 이런 식으로하고 싶은 이유입니다.


세션에 넣을 수 있습니다.

session_start();
$_SESSION['array_name'] = $array_name;

또는 양식을 통해 전송하려면 serialize 할 수 있습니다.

<input type='hidden' name='input_name' value="<?php echo htmlentities(serialize($array_name)); ?>" />

$passed_array = unserialize($_POST['input_name']);

세션은 클라이언트가 그것을 보지 못하기 때문에 (따라서 그것을 조작 할 수 없다는 장점이 있습니다) 배열이 클 경우 더 빠릅니다. 단점은 사용자가 여러 탭을 열었을 때 혼란 스러울 수 있다는 것입니다.

편집 : 많은 답변을 name="input_name[]" 사용하여 제안하고 있습니다. 이것은 일반적인 경우에는 작동하지 않을 것입니다. 연관 배열을 지원하도록 수정해야하며 다차원 배열을 지원하기 위해 많이 수정되었습니다 (icky!). 직렬화에 충실하는 것이 훨씬 낫다.



직렬화 된 배열을 사용하려면 폼의 전송 방법으로 POST를 사용해야합니다. GET의 크기 제한은 1024 자 정도입니다.

가능하면 세션을 사용합니다.


배열을 직렬화하여 문자열로 변환 한 다음 배열을 직렬화하여 배열 로 되돌릴 수 있습니다. 이렇게 :

<input type='hidden' name='input_name' value='<?php serialize($array_name); ?>' />

및 2 페이지 :

<?php $passed_array = unserialize($_POST['input_name']); ?>

<?php
/*arraytransfer.php*/
echo "Array transfer<br>";
$name = array( "mike", "tom" );
$arrCnt = sizeof( $name );
echo "arrCnt: $arrCnt<br>";

echo "<form action=\"arrayrcv2.php\" method=\"POST\">";
echo "<INPUT TYPE=\"HIDDEN\" NAME=\"arrCnt\" VALUE=\"$arrCnt\">";
for( $i=0; $i < $arrCnt; $i++ ) {
  echo "<INPUT TYPE=\"HIDDEN\" NAME=\"name\" VALUE=\"$name[$i]\"> ";
}
echo "<input type=\"submit\" name=\"submit\" value=\"Submit me!\" />";
echo "</form>";
?>


<?php
/*arrayrecv.php */
$arrCnt = $_POST["arrCnt"];
echo "Receiving data arrCnt = $arrCnt<br>";
$name = array();
for( $i = 0; $i < $arrCnt; $i++ ) {
  $var = $_POST["name"];
if( $var != "" ) array_push($name, $var );
}
print_r($name);
?>




arrays