3
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

session_cache_limiter指定でフォーム入力データを保持する

Last updated at Posted at 2016-04-22

本題

前回はフォームにこんな感じの

form_confirm.php
<button type="button" onclick="history.back()">

戻るボタンを作った話を書きました。

こういった入力フォームは通常【入力画面】→【確認画面】→【サンキュー画面】と3段階で遷移します。が、確認画面から何かを修正するために入力画面に戻る時に、一部のスマホブラウザなどでフォームの入力内容が消えてしまうことがあるようです。
参照:

  1. iOS の Chrome で history.back() すると入力されていたフォームのデータが消える
  2. 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属性に着いて書こうと思います。
というかこの記事全体が次回の枕みたいな感じです。
短い記事執筆を継続します。

3
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?