PHP5.3.0からの設定デフォルトが変更されている件

おそらくPHP4系の時代から動いているWebアプリケーション。新しいサーバーへ移行しました。 いまさらPHP4をインストールするわけにもいきませんし、ならば最新ということでPHP5.3.xをセッティング。 動作確認していると、携帯向けページでログインできません。

セッションIDをGETで

クッキーが使えないケータイブラウザがあります。 それらに対応するため、セッションIDをGETパラメータにくっつけて引きずり回す対応をしてありました。(たぶん普通の対応) しかし、PHP5.3.0からは「セッションIDはクッキーでのみ使用する」設定がデフォルトになっています。

http://www.php.net/manual/ja/session.configuration.php#ini.session.use-only-cookies より引用:

session.use_only_cookies は、 このモジュールがクライアント側へのセッション ID の保存に Cookie のみを使用することを指定します。
この設定を有効にすることにより、セッション ID を URL に埋め込む攻撃を防ぐことができます。
この設定は、PHP 4.3.0 で追加されました。 PHP 5.3.0 以降で、デフォルトは 1 (有効) となります。

対応方法

php.iniに下記を記述します。

session.use_only_cookies = 1


または、アプリケーションソース該当箇所に下記を記述します。

ini_set('session.use_only_cookies', 1);

facebook slideshare rubygems github qiita