概要
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('本気ですか?')">