POSTから受信するデータと、別の変数(SESSION配列の一部になりますが、開発中は独自の配列にあります)用の単純なフィルタリング関数があります。POSTデータは関数によって期待どおりに処理されますが、他の変数、$sess['iid']
は常に失敗します。なんで?
私はこれを回避することができますが、なぜそれが起こっているのか理解できないのは嫌です。
フィルタリング機能:
function filterNumber($fin) {
if( ctype_digit( $fin ) ) {
$fout = $fin;
} else {
$fout = 0;
}
return $fout;
}
私は変数の命名に厳密なので、POST配列はに転送され$dirty[]
、$clean[]
(データベースへのエントリ用に)適切なフィルターをに適用することによって生成されます$dirty[]
。まったく同じシーケンスがに適用され$sess['iid']
ます。
各段階の例:
$dirty['iid'] = $sess['iid'];
$dirty['liverpool'] = $_POST['liverpool'];
$clean['iid'] = filterNumber($dirty['iid']);
$clean['liverpool'] = filterNumber($dirty['liverpool']);
最初のステップ-to-は、POST変数と同じように機能します $sess['iid']
。$dirty['iid]
しかし、2番目の$dirty['iid']
via$clean['iid']
までfilterNumber()
は、何を入れたかに関係なく、値は0になり$sess['iid']
ます。これは、ステップ
を削除した場合にも発生します。$dirty['iid']