[PHP]セッションの添え字の落とし穴

Read More

PHPです


$_SESSIONについてハマったのでメモ。

スーパーグローバル変数である$_SESSIONは、画面を跨いでもその値が保持できることから利用する頻度は非常に高い。

通常変数、配列変数としても利用ができ、とにかく使い勝手が良い。


が、一つ落とし穴。


$_SESSIONには整数の添え字が使えない。
はいメモー。ここ試験にでるよー。


厳密にはまったく使えないわけではない。
使わない方が良い、というべきなのか。



ま、下に例を残しておく。

<?php
$_SESSION['123'] = 'hoge';
echo($_SESSION['123']);
?>

とすると、

結果は
>hoge

となる。


うん、これは普通だね。




次は画面を跨いで(例えばリダイレクトして)これをやる。
aaa.php
<?php
$_SESSION['123'] = 'hoge';
redirect('bbb.php'); // ※1
?>

bbb.php
<?php
echo($_SESSION['123']);
?>

※1 自作のリダイレクト関数。引数に指定したURLの場所に飛ぶ



結果は
>

となる。

結果が無いのは$_SESSION['123']はナスだから。
もちろん添え字が整数じゃなかったらちゃんとでます。



うーん、覚えておこう