PHP Manual
/
フォーム

フォーム、PHPでのフォーム処理

22. 08. 2019

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(ウェブブラウザ内の小さなファイル)に保存する。

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
Status:
All systems normal.
2024