HTMLからFORMでデータを投げて、phpで受け取り処理をする方法

なんのこっちゃという感じですが。
データベースを活用した大規模サイトを運営していたら、結構やりたいことが出てきまして、HTMLや既存のCMSだけではどうこう頑張れるものでもない。そこで頑張っても仕方がないということがよくあります。

例えば、単純にページごとにカウントさせたPVを表示したいとか、その記事にあったファイルをダウンロードさせたいとか個別の処理が発生するものです。MTやWPのプラグインを入れて無理やりカスタマイズして実現させるまでもなく、phpでどうにかできるんじゃない?というレベルのことです。

色々方法がありますが、今回はFORMタグからPOSTでデータをphpに送るやり方。
仮に、各記事にサンプルデータを配置しているサイトだとします。
そこでは、サンプルデータは一か所にまとめて配置しており、idやVersion情報を元にダウンロードするデータを引っ張ってきて、各記事にあるダウンロードボタンをクリックしたら、該当するデータがダウンロードされるという風にしたい場合。

1. 各記事にフォームでダウンロードボタンを設置する。

以下は、downloader.php へ post で id[1234], title[サンプルデータA],version[1.05] を投げている例。

<form name="download_form" action="./downloader.php" method="post">
<input type="hidden" name="id" value="1234">
<input type="hidden" name="title" value="サンプルデータA">
<input type="hidden" name="version" value="1.05">
<input type="submit" value="ダウンロードする" class="button">
</form>

2. 投げられたデータをphpで受け取る。

downloader.php に以下のように記述して、postで送られてきたデータを受け取る。
htmlspecialchars($name, ENT_QUOTES) でエスケープしているのはXSS対策。

$id = htmlspecialchars($_POST{'id'}, ENT_QUOTES);
$title = htmlspecialchars($_POST{'title'}, ENT_QUOTES);
$version = htmlspecialchars($_POST{'version'}, ENT_QUOTES);

基本的にデータなげて受け取りの流れはこんな感じ。
このデータを元にダウンロード該当ファイル探して投げ返すとかは、また別の話になるので後日書きます。