結論ファースト
先輩のコードでは大文字で書かれているものは、自分も大文字で書いたほうが良い。
セッション変数は$_session['xxx']
ではなく$_SESSION['xxx']
にすべき。
細かいストーリー(読み飛ばしてください)
プログラミングの練習のために、簡易的なSNSを作る機会ってありますよね。
そうすると、絶対に「ログイン機能を実装したい」と思うはず。
ログイン機能を実装するうえで初心者が悩むポイントといえば、やはり「セッション」。
セッション変数を定義したはずなのに、別ページにリダイレクトした瞬間に
Chromeくんから「undefined variableですよ!!」と叱られまくり、
しばらくドツボにハマっていました。
夕方4時くらいに悩みはじめ、解決したのが夜の10時過ぎ。
途中、日曜劇場『マイファミリー』を見て、俳優さんってすごいなあとか感心してましたが、
実に6時間くらい、パソコンの前でうんうん唸っていました。
よく紹介されている「解決策」
-
session_start();
はphpファイルの先頭of先頭に。 - php.iniファイルの設定をいじってみる。
- ブラウザの設定を確認する。
-
session_regenerate_id
の呼び出しすぎを避ける。 - 別のブラウザで試してみる。
- その他いろいろ
……でも、どれをやっても、全然うまくいかなかった!!!!!
結局どうしたか
6時間くらい悩み、「試しに$_session['xxx']
を$_SESSION['xxx']
にしてみよう」と、
藁にもすがる思いで、コードをいじってみました。
それまでの私は、「大文字で書いても小文字で書いても一緒でしょ」 と思っていました。
JavaScriptの「イベント」に関しては、大文字or小文字が挙動に影響するのは知っていましたが、
PHPにおいては、そういう話は聞いたことがありませんでしたし。
というわけで、あきらめ半分、期待半分で$_SESSION['xxx']
に書き直した結果。
これまでの大量のエラーが一掃された ではありませんか!!!
むすび
「大文字・小文字をバカしてはいけない」。
熟練のプログラマなら当然のことなのかもしれませんが、ド初級者の私にとっては、6時間を犠牲にして得られた、貴重な教訓だったのでした。