POSTされた値を取得

if( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' )
{
    foreach( $_POST as $key=>$value )
    {
        $$key = htmlspecialchars( $value, ENT_QUOTES );
    }
}

[ $$key = ]で配列のインデックス名を変数名として、変数を作成しています。これは可変変数を利用することにより実現できる方法です。

これにより$_POST[ 'text' ]のようなデータに対して、$textのような記述でアクセスできるようになります。

不正なコードの実行防止

POSTやGETなどのユーザーからの入力をブラウザに出力する際には、XSSを防止するためにHTMLタグを無効化する必要があります。

htmlspecialchars()関数は記号の文字参照への変換を行うため、簡単にタグを取り除けます。
PHP: htmlspecialchars - Manual

なお既定ではシングルクォートは変換されないため、必ず引数にENT_QUOTESを指定します。PHPのhtmlspecialcharsにはENT_QUOTESを付ける:phpspot開発日誌

$new = htmlspecialchars( '<a href="test">Test</a>', ENT_QUOTES );
変換対象 変換結果
& &amp;
" &quot;
' ※1 &#039;
< &lt;
> &gt;
※1 ENT_QUOTESが指定された場合のみ。

XSS (Cross Site Scripting)

ソフトウェアのセキュリティホールの一つで、Webサイトの訪問者の入力をそのまま画面に表示する掲示板などのプログラムが、悪意のあるコードを訪問者のブラウザに送ってしまう脆弱性のこと。

悪意を持ったユーザがフォームなどを通してJavaScriptなどのスクリプトコードを入力した時に、プログラム側に適切なチェック機構がないと、そのスクリプト内容がそのままHTMLに埋め込まれ、ページを閲覧したコンピュータでスクリプトが実行されてしまうことがある。

このような形でページに埋め込まれてしまったスクリプトは、Webブラウザではページ作成者以外が埋め込んだものであると認識できないため、ブラウザ側でこの問題を防止するには、スクリプトを使用しない設定にするほかなく、スクリプトを使用する場合は常にこの問題が発生しうる。

悪意のあるコードを直接埋め込んで実行させるほかに、ユーザに認識のないまま他所のスクリプトを呼び出して実行するよう仕向けることが可能なため、「クロスサイト」の名がついている。

スクリプトの内容によってはCookieデータの盗聴や改竄などが可能なため、商取引に使ったCookieを横取りして、本人になりすまして物品の購入を行ったり、Cookieを認証やセッション管理に使っているサイトに侵入したり、より広範かつ深刻な損害を与える可能性がある。

対策としては、訪問者からの入力内容をそのまま表示せずに、スクリプトなどのコードを識別して無効化する処理を施すことが必要である。

XSSとは【Cross Site Scripting】(クロスサイトスクリプティング) - 意味/解説/説明/定義 : IT用語辞典

エスケープの除去

PHPディレクティブ (php.ini) でmagic_quotes_gpcがonに設定されている場合、$_POSTなどのデータに含まれるシングルクォート (') や ダブルクォート (") は自動でエスケープされます。

このエスケープを除去するにはstripslashes()を使用します。

foreach( $_POST as $key=>$value )
{
    if( get_magic_quotes_gpc() )
    {
        $value = stripslashes( $value );
    }

    $$key = htmlspecialchars( $value, ENT_QUOTES );
}

またはPHPディレクティブへのアクセスが可能ならば、magic_quotes_gpcを無効にします。なぜならPHP5.3.0以降、この機能は非推奨となっているからです。

magic_quotes_gpc

GPC(Get/Post/Cookie) 処理に関する magic_quotes の設定を行います。 magic_quotes が on の場合、'(シングルクオート)、" (ダブルクオート)、\(バックスラッシュ) 、NULL にはすべて自動的に バックスラッシュでエスケープ処理が行われます。magic_quotes_sybase も on の場合、シングルクオートは、バックスラッシュではなく シングルクオートでエスケープされます。

magic_quotes_gpc - PHP: 実行時設定 - Manual