プロが教えるわが家の防犯対策術!

<php $data[5] = array(6,4,3,7,9); ?>
<a href='image.php?
<?php
print http_build_query($data,'','&');
?>
'>リンク先</a>

リンク先へのURLの後ろにhttp_build_queryを使いつけて
送り側で$_GETで受け取って配列を使うようなことを
しようと思ったのですが
Undefined index: dataと言われてうまくいきません。
どのようにして配列を取り出せばよいのでしょうか?

A 回答 (3件)

・PHPにおいて配列サイズの指定は不要な上、これだと5番目の要素に更に配列を作ってしまい、別の意味になります。


・http_build_queryは変数名を親配列にはしません。
・HTML中に埋め込む場合は「&」ではなく「&amp;」としなければHTMLとして不正になります。

正しくは下記のようになります。

<a href="image.php?<?=http_build_query(array('data' => array(6,4,3,7,9)), '', '&amp;')?>">リンク先</a>

また、これらの値を受け取って使う場合、特に今回のように

・GETを使う場合
・配列を渡す場合

該当する場合は十分に「正しい構造を受け取っているか」の検証を行ってください。GETはURLを書き換えるだけで簡単に渡す値を操作できてしまうので特に注意が必要です。

$_GET, $_POSTなどを受け取る際の処理
http://qiita.com/mpyw/items/2f9955db1c02eeef43ea

汎用的な変数構造フィルタリング関数
http://qiita.com/mpyw/items/c39b9ee695a5c2e74627
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
色々試してみて複数の配列もこのやり方で渡せました。
本当にありがとうございました。

お礼日時:2013/12/28 19:10

これで生成される<a href='image.php? 以降のものに data=XXXX といったパラメータは無いように思うのですが。

    • good
    • 0
この回答へのお礼

回答ありがとうございます。
確かに、そのようでした。書き方間違ってました。

お礼日時:2013/12/28 19:12

単にリンク先に配列のデータを渡したいだけならばセッションに格納する方法があります。



この方法にこだわるのでしたらわかりかねます。
    • good
    • 0
この回答へのお礼

ありがとうございます。初心者なので、後でセッションについて調べておきます。

お礼日時:2013/12/28 19:11

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