- 2008-10-02 (木)
- Webサイト
サークルのサイトがだいぶ進んだので、気休め的にDisneyParks.infoもまた作りこみ再開しました。
で、クチコミのシステムを作ってて気づいた!
$_Sessionの値が突然書き変わってる!!!
$_Session(セッション)の値が書き変わるって相当ヤバイことなんですよ。
普通、ログインが必要なシステムとかってセッション変数にユーザーIDとかを入れて持ちまわるようにするから、勝手に変わったら、いつの間にかAさんがBさんに変わるようなものなんです。
で、いろいろ調べた結果、register_globalsがOnになっていたのが原因。
Onになってると、たとえば$_Session['id']にユーザーIDを入れて持ちまわらせてる場合、
$_Session['id]が6の人が、profile.php?id=2というURLにアクセスする。
profile.phpには、
$id=$_GET['id'];
echo "ユーザーID:{$id} を参照しています";
と書いた場合に、$idに$_GET['id']を入れただけのはずなのに$_Session['id']にも$_GET['id']が入ってしまうのです。
で、対策として.htaccessでregister_globalsをoffにしようとしたけど、その.htaccessファイルをどこに置けばいいのか分からなくて困ったw
使ってるサーバーにもよるけど、coreserverの場合はrootに置かないと動かなかった。
public_html内やpublic_htmlの下にあるフォルダに置いてもダメでした。
ってことで、register_globalsをoffにしたい場合は、一番上に.htaccessを作って、
php_flag register_globals off
と書けばOKみたいです。
ちなみに、magic_quotes_gpcも同じように
php_flag magic_quotes_gpc off
と書けばOKみたい。
- Newer: 池袋、渋谷、これから秋葉原
- Older: JAL JGCとFlyOnプログラムがまた変わる