フォームでデータを受け渡すときにhiddenフィールドを使う場合、中身が見られてしまうのが気になることがあります。
その場合、hiddenフィールドを暗号化して可読性を悪くする方法があります。
※hiddenフィールドではなく$_SESSIONを使う方法もありますが。
hiddenフィールドを暗号化するには、base64_encode関数で「6XnY44XW44XZ44Ts44」のようなアルファベットと数字などで構成される文字列に置き換える方法があります。
これだけで可読性は低くなりますが、「デコードすれば読み取られる」のが気になるときは、さらにstr_rot13関数を適用するのはどうでしょうか。
アルファベットを13文字ずらす関数で、「a」が「n」に置き換えられます。アルファベットは26文字なので、もう一度実行すれば元の文字列に戻せるのが特徴です。
base64_encode後にstr_rot13した文字列は、一見するとbase64の文字列に見えますが、単純にデコードしても元の文字列に戻すことはできません。
○文字列の加工
元の文字列:見られたくない文字列
base64_encode適用後:6KaL44KJ44KM44Gf44GP44Gq44GE5paH5a2X5YiX
str_rot13適用後:6XnY44XW44XZ44Ts44TC44Td44TR5cnU5n2K5LvK
いずれにしても可読性を低くするためだけの簡易的な暗号化ですが、手軽に使えて便利です。
<html> <head> <title>hiddenフィールドを暗号化する</title> </head> <body> <?php $a = "見られたくない文字列"; $b = str_rot13(base64_encode($a)); // hiddenフィールドを復号 if (isset($_POST["test"])) { $c = htmlspecialchars($_POST["test"], ENT_QUOTES, "UTF-8"); $c = base64_decode(str_rot13($c)); echo "復号したhiddenフィールド:{$c}"; } ?> <form method="POST" action=""> <input type="hidden" name="test" value="<?php echo $b; ?>"> <input type="submit" name="b1" value="送信する"> </form> </body> </html>
<input type="hidden" name="test" value="6XnY44XW44XZ44Ts44TC44Td44TR5cnU5n2K5LvK">
○実行結果(画面)