• ベストアンサー

2次元配列の値の受け渡しについて教えてください

お世話になります。 phpで2次元配列の値の受け渡しについて教えてください。 A.phpファイルからB.phpファイルに2次元配列の値を渡したいと考えています。 出来ればPOSTで2次元配列を送りたいと考えていますが、そもそもPOSTで2次元配列を送ることはできるのでしょうか? たとえば [A.php] $DATA = array( array('name'=>"tanaka", 'age'=>"20"), array('name'=>"sasaki", 'age'=>"30"), ); をB.phpファイルに送るにはどうすれば良いのでしょうか? どなたか教えて頂けないでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

http://us.php.net/en/function.serialize で一つの文字列にして http://us.php.net/en/function.unserialize で受け取る。 #悪意ある人がPOSTで変な送ってくるようなのを防ぐためにローカルファイルを経由したほうがいいのではないかという気がする

kon0203
質問者

お礼

遅くなってすいません。 >#悪意ある人がPOSTで変な送ってくるようなのを防ぐためにローカルファイルを経由したほうがいいのではないかという気がする セキュリティにやはり問題がありそうですね。 もう少し違う方法を考えてみますね。 ありがとうございました。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

文字列を経由するならやはりserializeでしょうね クォーテーションの問題も考えるとurlencodeしておいた方がよいですね //X.php <? $DATA = array( array('name'=>"tanaka", 'age'=>"20"), array('name'=>"sasaki", 'age'=>"30") ); $dataStr=urlencode(serialize($DATA)); print <<<eof <form action ="Y.php" method="post"> <input type="hidden" name="DATA" value="{$dataStr}"> <input type="submit" value="go"> </form> $dataStr eof; ?> //Y.php <? $data=$_REQUEST["DATA"]; $data=unserialize(urldecode($data)); print_r($data); ?> ただし、#2さんの指摘もあるとおり、ユーザーに任意に書き換えられてしまう 危険が高いので、ふつうはこんなことはしません。

kon0203
質問者

お礼

返事遅くなってすいません。 <input type="submit" value="go"> を使うとユーザーに「go」ボタン押下のアクションが必要ですが、 そうではなく、アクションなしにB.phpファイルに送りたかったのですが。 そもそも説明不足でした。。。 すいません。 ご指摘通りセキュリティに問題があるなら他の方法を考えないとです。 ・2次元配列をばらしてGETでB.phpに送信 ・B.phpで値を受け取って2次元配列に組み立て。 こんな感じでやってみようかと考えています。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

普通はセッションつかいますね //A.php <? session_start(); $DATA = array( array('name'=>"tanaka", 'age'=>"20"), array('name'=>"sasaki", 'age'=>"30"), ); $_SESSION['DATA'] =$DATA; ?> <a href="B.php">B</a> //B.php <? session_start(); $DATA=$_SESSION["DATA"] print_r($DATA); ?>

kon0203
質問者

補足

回答ありがとうございます。 私もSESSIONは考えましたが、 色々都合が悪くSESSIONではなくPOSTと考えていました。 POSTではむりなのでしょうか・・・・