tags:

views:

444

answers:

7

Hello, I'm trying to send an array to another page.

What I tryed before was:

page1

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

And page2

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

Now how do I make $passed_array act like an array?

Or do you know of any other way of solving this problem?

Thanks, Mike.

Edit: The reason I want to do it this way is because I need to avoid sessions and cookies.

+12  A: 

You could put it in the session:

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

Or if you want to send it via a form you can serialize it:

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

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

The session has the advantage that the client doesn't see it (therefore can't tamper with it) and it's faster if the array is large. The disadvantage is it could get confused if the user has multiple tabs open.

Edit: a lot of answers are suggesting using name="input_name[]". This won't work in the general case - it would need to be modified to support associative arrays, and modified a lot to support multidimensional arrays (icky!). Much better to stick to serialize.

Greg
+1 beat me to it
Jonathan Fingland
You can sign/encrypt the serialized array to prevent tampering.
Vinko Vrsalovic
Or insert a special unique value and check its presence upon receipt
Vinko Vrsalovic
Tryed the serilaize method and it ruins the html code for some reason .. =/
Mike
htmlencode the serialized array
Vinko Vrsalovic
fixed: I wrote <input value="" /> insted of <input value='' /> .. this is answer is the way to go :-)
Mike
A: 

Change input_name to input_name[] in your input tag, then put an input tag for every value of the array.

http://phpprogramming.wordpress.com/2007/05/06/php-passing-array-using-hidden-form-element/

HeavyWave
A: 

You can not send the array all at once, you will have to either send each value individually:

<input type='hidden' name='input_name[]' value='<?php print_r($array_name[0]); ?>' />
<input type='hidden' name='input_name[]' value='<?php print_r($array_name[1]); ?>' />
<input type='hidden' name='input_name[]' value='<?php print_r($array_name[2]); ?>' />
...

Or look into json or serialization.

Scott Saunders
A: 

You could serialize the array, which turns it into a string, and then unserialize it afterwards, which turns it back into an array. Like this:

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

and on page 2:

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

Note that to work with serialized arrays, you need to use POST as the form's transmission method, as GET has a size limit somewhere around 1024 characters.

I'd use sessions wherever possible.

Pekka
A: 

It'Work Thank you very much.......

aj
A: 

hi serialize is working for only interger, how the array containing string will be passed to other page plz give the answer soon...

Raja