気軽に読めるPHP入門書・PHPスクリプトが動かないときの原因と対策などを紹介します。

  1. PHPサンプルコード
  2. 7 view

hiddenフィールドを暗号化するには

フォームでデータを受け渡すときに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">

○実行結果(画面)

hiddenフィールドの暗号化

hiddenフィールドの暗号化

PHPサンプルコードの最近記事

  1. PHPでアラートを表示する

  2. ランダムなパスワードを自動生成する

  3. 配列をランダムに並べ替える(おみくじ・抽選プログラムを例に)

  4. n番目の文字を取得する

  5. 13日の金曜日を表示する

関連記事

PAGE TOP