著作一覧 |
あー、何ページも作ってから間違いに気づいてしまった。なかなかの衝撃。
具体的には次のようなコード。
$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;
ディープコピーがデフォルトだったのか……
ジェズイットを見習え |