本題
前回はフォームにこんな感じの
form_confirm.php
<button type="button" onclick="history.back()">
戻るボタンを作った話を書きました。
こういった入力フォームは通常【入力画面】→【確認画面】→【サンキュー画面】と3段階で遷移します。が、確認画面から何かを修正するために入力画面に戻る時に、一部のスマホブラウザなどでフォームの入力内容が消えてしまうことがあるようです。
参照:
- iOS の Chrome で history.back() すると入力されていたフォームのデータが消える
-
webフォームでAndroid端末の「Back」ボタンを使用した時に入力した内容が消えている
今回はこれを防ぐために、PHPでキャッシュ保持させる方法を採用しました。
なおキャッシュコントロールではなく、戻るボタン押下時にもPOSTする方法もあるようですが少々面倒くさそう(主観)。
form_confirm.php
<button type="button" onclick="history.back()">
form.php
<?php
session_cache_limiter('public');
session_start();
?>
session_startの前にsession_cache_limiterで、onclick="history.back()"で戻った際にキャッシュを保持する指定を行います。
なお、この方法についてはこちらの投稿がより詳しいです。
今回の場合は、上記の書き方で無事にさまざまなスマホのブラウザでもキャッシュが残るように出来ました。
次回予告
では次回予告という名のblog三日坊主自戒予告を...
次回もフォーム周り。autocomplete属性に着いて書こうと思います。
というかこの記事全体が次回の枕みたいな感じです。
短い記事執筆を継続します。