| 著作一覧 |
あー、何ページも作ってから間違いに気づいてしまった。なかなかの衝撃。
具体的には次のようなコード。
$ATTR_NAMES = array('x', 'y', '......);
...
// save the post data
foreach ($ATTR_NAMES as $attr) {
$_SESSION['prior_post_'.$attr] = $_POST[$attr];
}
...
if ($some_condition) {
$_SESSION['prior_post_x'] = 0; // エラーなので初期化して保存しておく。
}
...
<span class="error">なんかおかしいから入れ直してね。無視したらゼロとして扱うよ!</span>
<input type="text" value="<?php echo $_POST['x'] ?>" ...
という調子で、POSTされたデータを保存するのに、いちいち$_SESSION内に展開していた。
が、ふと、こういったデータの中に配列があって、それで気づいてしまった。
これでいいんじゃん。
$_SESSION['prior_post'] = $_POST; ... $_SESSION['prior_post']['x'] = 0;
ディープコピーがデフォルトだったのか……
ジェズイットを見習え |