2012-04-21 14 views
0

別のファイルにリダイレクトする必要があるPHPファイルがありますが、2番目のファイルに配列を渡す必要があります。これどうやってするの。2つの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 
5

あなたがヘッダを行う方法はありません。それはしかし、これはちょうどその性質によってリダイレクトはPOSTを行うことができないというURL

someurl.php?vals=Array 

注意をgeneratう

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

する必要があるだろう。新しいGETリクエストが発生します。つまり、URLにデータを渡す必要があります。 URLが非常に大きい場合は、URLの長さに制限があるため、ほとんどのURLを失うことはほとんどありません。それは短いものだ場合

しかし、あなたのような何かを試すことができます。

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

をし、それが動作願っています。

+0

確かに!!これは最高の答えです!ほとんどの開発者がよくある誤解。 – 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

はい、そうです。 –

関連する問題