表題の通り
問題
多くのHTML Formでは送信ボタンのサンプルとして以下のようなコードを例示してします。
<form>
<input type='submit' value='送信'>
</form>
もしボタンによって処理を分岐させたいのであれば、このようなコードを書きます。
<form>
<input type='submit' name='action' value='送信'>
<input type='submit' name='action' value='下書き保存'>
</form>
if ($_POST['action'] == '送信') {
// 送信処理
} else if ($_POST['action'] == '下書き保存') {
// 保存処理
}
しかしこの方法では、ソースコードに日本語の文字列が加わって少々気持ち悪いです。
また、さらには
- 複数言語対応した時に分岐が面倒になる。
- (最近は問題ないが)日本語の文字コードの問題が発生する。
などの問題が出てくるかもしれません。
解決
以下のようなコードを書くべきではないでしょうか。
<form>
<button type='submit' name='action' value='send'>送信</button>
<button type='submit' name='action' value='save'>下書き保存</button>
</form>
これならサーバーサイドでは$_POST['action'] == 'save'
という比較で済むので安心です。
そもそも<button>
を使うほうが汎用性が高いので、最初から全ての送信ボタンは<button>
を使うべきだと思います。
どうでしょう。