headerではジャンプする方法は前回紹介しましたが、ページをジャンプさせる時にURLの後に「?」以降に「連想配列キー名=データ」を書く事で
GETメソッドでデータを送る事が出来ます。
2つ目以降のデータを送信するには「&」で繋げば可能です。
このデータが半角のアルファベットと数字だけなら、このままでも可能ですが、それ以外があると文字化けしてしまいます。
GETメソッドで文字化けしないようにする方法
今回は文字を文字化けしないように加工するphp関数を紹介します。
■urlencode(元の文字列);
文字化けしないように加工された変数が返り値になります。
例1:test_1.php
<?php $txt="あいうえお"; $data1=urlencode($txt); $data2=urlencode("ABCD"); $data3=123456; header("location: test_2.php?A=".$data1."&B=".$data2."&C=".$data3."&D=".urlencode("かきくけこ")); ?>
例2:test_2.php
<?php print $_GET["A"]; print "<br>"; print $_GET["B"]; print "<br>"; print $_GET["C"]; print "<br>"; print $_GET["D"]; ?>
このサンプルはurlencode()への値の入れ方の例です。
文字列を入れた変数を入れても良いし、直接文字列を入れてもかまいませんし、返り値を直接header()のパラメータに入れる事もできます。
test_1.phpを実行するとtest_2.phpへ即ジャンプし
あいうえお
ABCD
123456
かきくけこ
と表示されます。
この仕組みを使えば、どんなエラーが起こったか等のメッセージを、フォームのページで表示させフォームの項目の修正を促す事ができます。
しかしheader()関数を実行したら即ジャンプする訳ではありません。
次回は即ジャンプできるようにする方法を紹介します。