トップ «前の日記(2012-01-17) 最新 次の日記(2012-01-23)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2012-01-20

_ PHP初心者の間違い

あー、何ページも作ってから間違いに気づいてしまった。なかなかの衝撃。

具体的には次のようなコード。

$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;

ディープコピーがデフォルトだったのか……


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|

ジェズイットを見習え