htmlフォームからPHPへ送られた文字情報の不要な命令文を無効化する方法

入力フォームからの文字データには文字データ以外にもhtml文など「テキスト以外」のものが入っている場合があります。
それが必要な場合もありますが、そういった「テキスト以外」が不要な場合には

「テキスト以外」が機能しないようにして文字のみを表示するようにする関数があります。

こういう処理をサニタイズというのですがPHPでは「htmlspecialchars」で簡単に行えます。



サニタイズする方法

■htmlspecialchars


使い方は以下のようになります。

htmlspecialchars(フォームから受け取った文字列の変数);

返ってくる値はhtmlタグを無効化変換した文字列の変数です。

具体的な例を書いてみます

例1:

<?php

$data='<a href="test.php">リンク</a>と'."<strong>ストロング</strong>のサンプルです";
$moji=htmlspecialchars($data);

print $data;
echo "<BR><BR>\r\n";
print $moji;
echo "<BR><BR>\r\n";

?>


このサンプルは一行目はそのままのリンクやストロングが有効なままの表示です。
二行目には一行目にhtmlspecialcharsをかけてリンクやストロングを無効にした表示になっています。

htmlフォームからPHPへ送られた文字情報の不要な命令文を無効化する方法

ソースは以下のように変換されています。

<a href=”test.php”>リンク </a> と<strong >ストロング</strong >のサンプルです<BR ><BR>
&lt;a href=&quot; test.php&quot;&gt;リンク &lt;/a&gt; と&lt;strong &gt;ストロング&lt;/strong &gt;のサンプルです<BR ><BR>

「<」がhtml上で表示される「&lt;」と変換したりして<a href=””>等をタグとして機能しないようにしています。

■htmlspecialchars_decode

逆にhtmlspecialcharsで変換したデータを元に戻すには
「htmlspecialchars_decode」関数を使います。

htmlspecialchars_decode(htmlspecialcharsをかけた変数);

例1で$mojiに入れた文字を$dataに戻す為には

$rev=htmlspecialchars_decode($moji);

で$revに$dataと同じデータが入ります。

htmlspecialcharsの利点はhtmlspecialchars_decodeを使えば戻せる点でしょうか?
次は消去する方法を紹介します。

スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする

関連記事



スポンサーリンク