概要
PHPでHTMLを操作する際、formからの送信前にユーザーに確認して、OKの場合だけ値をPHPで受け取る方法。
- form要素のonsubmit属性で確認用の関数のreturnを設定
- JSで確認用の関数を準備(
return true/false
) - submitに対する処理を普通にPHPで記述
実装例
以下のHTMLでは、form要素の属性でonsubmit="return ask()
“を設定。true/false
を返すask()
関数は別途定義している。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>PHP & confirm</title> <script> ask = () => { return confirm('送信を実行しますか?'); } </script> </head> <body> <form method = 'post' onsubmit="return ask()"> <input type="hidden" name="message" value="Formが送信されました"> <input type="submit" value="送信"> <p><?= $message ?></p> </form> </body> </html> |
HTML側でask()
の結果がfalse
のときは先へ進まず、true
の時にPOSTが実行される。
PHP側では、HTMLからPOSTされたときの処理を普通に書けばよい。
1 2 3 4 5 6 7 |
$message = '送信待機中'; if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['message'])) { $message = $_POST['message']; } } |
なお上の例では関数ask()
を別に定義したが、以下のように直接confirm()
関数を書き込んでも実行される。
<form onsubmit="return confirm('本気ですか?')">