0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

私(PHPド初級者)が陥った、セッション変数が消える現象の「盲点」

Posted at

結論ファースト

先輩のコードでは大文字で書かれているものは、自分も大文字で書いたほうが良い。
セッション変数は$_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時間を犠牲にして得られた、貴重な教訓だったのでした。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?