フォーム、PHPでのフォーム処理
HTMLフォームを作成し、それを送信して、今度はデータを処理したいとします。HTMLフォームの作成については、別記事があります。
データの受信 - さまざまな方法
フォームの送信方法は、HTMLで直接設定します。
2つのオプションがあります。
- GET** - アドレスバーでクエスチョンマークの後に表示されます。
例:
php.baraja.cz/search.php?query=formulare。 - POST - 非表示(見えない)、ほとんどのフォームは郵便で送られます。
その後、同じ方法でPHPで読み取る必要があります。
ユーザーからデータを取得し、スクリプトに転送する
基本はHTMLフォームで、その作り方は別記事をご覧ください。
手始めに、ユーザーの名前を入力する簡単なフォームを想定してみましょう。
<form action="welcome.php" method="GET">Zadejte jméno: <input type="text" name="username"><input type="submit" value="odeslat"></form>
テキストボックスが表示されるので、名前を入力し、送信をクリックします。ボタンがクリックされると、フィールドの内容がスクリプト welcome.php に送信されます。
では、実際に welcome.php ファイルで処理をしてみましょう。
$username = $_GET['ユーザー名'];echo '入力された名前は' . $username;
特別な変数 $_GET に注意してください。これは、フォームからのデータを格納する スーパーグローバル変数 で、配列としてアクセスすることができる。
しかし、このソリューションの問題は、受信したデータが安全ではないことであり、同様のフォームが簡単に攻撃される可能性があることです。例えば、潜在的な攻撃者が名前の代わりにjavascriptのコードをフィールドに入力すると、そのコードがページに書き込まれ実行されることがあります。
そのため、HTMLコードに出力する前に、必ずユーザーデータをサニタイズする必要があります。
$username = $_GET['ユーザー名'] ?? '不明';echo '入力された名前は' . htmlspecialchars($username);
さらなる加工
受信したデータに対して何でもできるし、普通の変数と同じように扱える。
例えば、2つのフィールドに値を追加します。
echo $_GET['x'] + $_GET['y'];
また、ファイル、データベース、電子メール、...に保存します。
その際に便利なのが、以下の機能です。
- file_put_contents - ファイルにデータを保存する関数です。
- MD5 - チェックサム計算、パスワード用など
- Cookies-データをcookies(ウェブブラウザ内の小さなファイル)に保存する。