session_start() → POST遷移 → history.back 等で戻ると「有効期限切れ」って出てしまうのは、session_start()時に以下ヘッダが勝手に出力されてクライアントキャッシュが無効になってしまうため。
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
なので、session_start()直後に以下ヘッダを吐いてあげればOK。
<?php
session_start();
header('Expires: -1');
header('Cache-Control:');
header('Pragma:');
// 以下処理