上へ

Firefoxでセッション変数が勝手に書き換えられる

特定ページに割り当てたセッション変数を非同期で読み込むファイルに渡す設定にしていたが、Firefoxでは他のページに割り当てられているセッション変数が勝手に読み込まれてしまうことがある。セッション変数とは$_SESSION["name"]といった形式の変数のこと。

これは、ホームページのヘッダーで、<link rel="prev" href="https://・・・" /><link rel="next" href="https://・・・" />というコードを入れているため。いわゆるページネーションというものです。

IEやSafari、Chromeでは問題ないが、Firefoxではどうやら「rel="next"」のほうを読み込んでセッション変数を書き換えている模様。ひょっとしたら先に「rel="prev"」のほうを読み込んでセッション変数を書き換え、更に「rel="next"」を読み込んで上書きしているのかも知れません。いずれにしてもPHPを使う側にとっては困った挙動です。

Firefoxだけページネーション無しということで。。。

ちなみに最近のユーザエージェントは複数のブラウザ名が入っているので振り分けには注意が必要です。Firefoxの場合は以下の設定でうまく行きます。

対策

PHP
1
2
3
4
5
<?php
if (!strstr(strtolower($_SERVER['HTTP_USER_AGENT']), 'firefox')){
echo '<link rel="prev" href="https://・・・" /><link rel="next" href="https://・・・" />';
}
?>