アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

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ファイルに送るにはどうすれば良いのでしょうか?

どなたか教えて頂けないでしょうか?
よろしくお願いします。

A 回答 (3件)

http://us.php.net/en/function.serialize
で一つの文字列にして
http://us.php.net/en/function.unserialize
で受け取る。

#悪意ある人がPOSTで変な送ってくるようなのを防ぐためにローカルファイルを経由したほうがいいのではないかという気がする
    • good
    • 0
この回答へのお礼

遅くなってすいません。

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

お礼日時:2009/10/05 09:55

文字列を経由するならやはり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さんの指摘もあるとおり、ユーザーに任意に書き換えられてしまう
危険が高いので、ふつうはこんなことはしません。
    • good
    • 0
この回答へのお礼

返事遅くなってすいません。
<input type="submit" value="go">
を使うとユーザーに「go」ボタン押下のアクションが必要ですが、
そうではなく、アクションなしにB.phpファイルに送りたかったのですが。
そもそも説明不足でした。。。
すいません。

ご指摘通りセキュリティに問題があるなら他の方法を考えないとです。
・2次元配列をばらしてGETでB.phpに送信
・B.phpで値を受け取って2次元配列に組み立て。
こんな感じでやってみようかと考えています。

お礼日時:2009/10/05 10:03

普通はセッションつかいますね


//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ではむりなのでしょうか・・・・

補足日時:2009/10/02 22:09
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!