PHPでフォームから送信された場合のみ処理をする

form.phpでアクション先をthanks.phpにして、thanks.phpに飛んだときにフォームの入力内容をDBに保存し、postで受け取ったメールアドレスにsendmail等でメールを送る。という一般的な処理があります。

[流れ]

form.php (フォームに情報を入力)
  ↓
thanks.php (ここで入力内容をDBに保存 & 完了メール送信)

でも、そのままだと、thanks.phpに直リンされた時(form.phpから飛ばずに直でURLを入力された時)に、フォームの内容がないのに処理が実行されてしまう。。。

そんな時は、

thanks.php


if (isset($_POST["send"])) {
    // フォームから送信された場合の処理。
  // DBに入力データを保存 & 完了メール送信
}

を入れると、フォームから送信された場合のみに、処理を実行してくれます。

フォームから送信されなかった場合は、elseにredirect処理を書けば、thanksページ自体を表示できなくできますね。

thanks.php


if (isset($_POST["send"])) {
    // フォームから送信された場合の処理。
  // DBに入力データを保存 & 完了メール送信
}else{
  // redirect処理
}