- ベストアンサー
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ファイルに送るにはどうすれば良いのでしょうか? どなたか教えて頂けないでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
http://us.php.net/en/function.serialize で一つの文字列にして http://us.php.net/en/function.unserialize で受け取る。 #悪意ある人がPOSTで変な送ってくるようなのを防ぐためにローカルファイルを経由したほうがいいのではないかという気がする
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
文字列を経由するならやはり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さんの指摘もあるとおり、ユーザーに任意に書き換えられてしまう 危険が高いので、ふつうはこんなことはしません。
お礼
返事遅くなってすいません。 <input type="submit" value="go"> を使うとユーザーに「go」ボタン押下のアクションが必要ですが、 そうではなく、アクションなしにB.phpファイルに送りたかったのですが。 そもそも説明不足でした。。。 すいません。 ご指摘通りセキュリティに問題があるなら他の方法を考えないとです。 ・2次元配列をばらしてGETでB.phpに送信 ・B.phpで値を受け取って2次元配列に組み立て。 こんな感じでやってみようかと考えています。
- yambejp
- ベストアンサー率51% (3827/7415)
普通はセッションつかいますね //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); ?>
補足
回答ありがとうございます。 私もSESSIONは考えましたが、 色々都合が悪くSESSIONではなくPOSTと考えていました。 POSTではむりなのでしょうか・・・・
お礼
遅くなってすいません。 >#悪意ある人がPOSTで変な送ってくるようなのを防ぐためにローカルファイルを経由したほうがいいのではないかという気がする セキュリティにやはり問題がありそうですね。 もう少し違う方法を考えてみますね。 ありがとうございました。