5

最新のサイトの 1 つで Codeigniter 2.1 を使用していますが、3g 経由でアクセスすると Cookie が破損します...

クッキーが最初に読み取られるポイントまでデバッグを行うと、明らかに切り捨てられていることがわかります。例を次に示します。

a:14:{ 

する必要があります

a:14:{s:10:"session_id";s:32:"ef171f95db26ad51986.......

これは、モバイル ネットワークに接続されたデバイスで Cookie が読み取られた場合にのみ発生します。これまでにテストできたのは 3 つだけで、驚いたことに 1 つが機能しました。

  • ボーダフォンドングル付きAsusラップトップ(x)
  • Macbook Air とボーダフォン ドングル (x)
  • Orange UK ネットワーク上の iPhone 3 (x)
  • Samsung Galaxy SII on Three (動作)

ネットワークベースで、途中でヘッダーが破損していると思います。(もしかして代理?)

これは一週間ずっと私に届いていたので、どんな情報でも素晴らしいでしょう.

編集: サイトにはかなりの数の Cookie がありますが、サイズは大きくありません。Google Analytics、Sharethis、Uservoice、Facebook があります。

4

3 に答える 3

4

何が原因なのかはわかりませんが、問題を回避するのに役立つ問題を見つけるのに役立ついくつかのアイデアがあります。私が最初に行うことは、上記の例で 1 つのプロバイダーだけを試して、エラーの一貫性を保つことです。

  • クッキーは常に等しいa:14:{
  • その Cookie と同じ名前の Cookie のみを含む 2 行の PHP ページを作成できますか?ページに他の変数がない場合。(Cookie を ?? に設定できますa:14:{}a:1? a:14:xxx:{xxxx}? 一貫して文字列を切断している可能性のあるパターンを探しています。
  • 2 行のページでコードのカットに問題がない場合は、実際に問題が発生しているページのコピーを取り、2 行 (Cookie を設定する行) だけになるまで、ページ上のすべてを削除し始めます。およびそれを出力する行) 問題はコードのどこかにあります。
  • 2行のページに問題がある場合、おそらくそれは実際にはモバイルネットワークです(私の経験ではこれは見ていませんが、Cookieを消去している何らかのプロキシを持っている可能性があります)。プロバイダーのネットワークで問題のないものが見つかるまで、Cookie を介して別のコードを送信しようとします。(Cookie 内のデータを uuencode または base64_encode など)。
  • プロバイダーがすべてをブロックしていることが判明した場合は、送受信されるヘッダーを非常に低いレベルで分析できる fiddler などのプログラムをダウンロードすることを検討してください。

これらのトラブルシューティング手順がお役に立てば幸いです。

于 2012-05-11T03:06:00.803 に答える
0

ありますか

$config['sess_match_ip']        = TRUE;

もしそうなら-これは携帯電話デバイスでは機能しません。多くの電話会社が携帯電話で毎秒IPアドレスを循環させるからです(いいえ-理由はわかりません)-したがって、セッションが強制終了されます

または、切り替えてみましたか

$config['sess_encrypt_cookie'] = true;

これを変更すると、問題も解決する可能性があります

于 2012-05-11T04:05:54.330 に答える
0

ci のセッション クラスを使用せずにいくつかのテスト Cookie を設定してみて、それも破損するかどうかを確認してください。そうでない場合、それはciのバグです。Codeigniter が「\」でエスケープされたデータをシリアル化できないという同様の問題がありました。また、保存後に Cookie のサイズを必ず記録してください。たぶん4096を超えています。

于 2012-05-14T18:44:36.223 に答える