[PHP-users 33112] Re: Header の Cookie について

Mashiki mashiki @ yanah.com
2008年 1月 17日 (木) 02:09:42 JST


 Mashikiです。

返事しにくい理由を考えてみました。

・質問者の名前が分からない
・質問者のスキルが分からない
・問題が不明確

下記のようなら答えやすいと思うよ。

------------------------------------------------------------
件名: セッション変数に意図しない値が代入される

本文:
はじめまして、phpにて社内システムを開発している●●です。

今回、あるシステムにてセッション変数を利用しているのですが、
時々、意図しない値がセットされてしまい解決できず悩んでいます。

$_SESSION['xxx']['yyy']のようなセッション変数に保存した値を
参照しようとすると、'aa'という値が入っているはずなのに、
時々、

「214826379.1200040891.1.1.utmccn=(direct)|
 utmcsr=(direct)|utmcmd=(none) )」
 ※見易さのため途中に改行を入れています

のような値が入ってしまうことがあります。
この変数の値はsql文のwhere句にて使用しているため、正当性の
チェックにはじかれてエラーとなってしまいます。
現象はランダムに発生し再現手順はつかめていませんが、
ブラウザがXXXX6とXXXX7のみで発生し、XxxxXxxだと発生しない
ようです。

スクリプト1とスクリプト2の2箇所でこの変数はセットしており
どちらも以下のようなコードとなっています

    if ($xx=='yyy') {
        $_SESSION['xxx']['yyy'] = 'aa';
    } else {
        $_SESSION['xxx']['zzz'] = 'bb';
          :
    }

このセッション変数を参照するのは各スクリプトからincludeされる
スクリプト0で以下のようなコードとなっています。

    start_session();

    $wk = $_SESSION['xxx']['yyy'];
    if (!preg_match('/^aa|bb|cc|dd$/', $wk)) {
        // エラー処理
    }
    $sql = "SELECT * FROM TableName WHERE fe = $wk";

サーバー環境は以下の通りです。
 OS:CentOS4.4
 ウェブサーバー: Apache2 
 PHP:PHP-4.4.2 (CGI版) 
 MySQL:MySQL-4.0.24 


どなたかこの問題についてアドバイスお願いします。

-----
簡単なシグニチャ
-----

-----------------------------------------
・OSはバージョンも記載。Linuxならディストリビューションも書く
・apache/php/DBはインストール方法、はじめから入っていたものか、
 RPMを落としてきたのか、ソースからコンパイルして入れたのか
 記載するとGood!。CGIは何でだろ?ホスティングサービスで
 差しさわりがないならどこの何と言うサービスを利用しているのか
 書くと同じことを経験&クリアした人が答えやすい



>以下、phpのMLでは不適当な話題だったのでしょうか???
>
>
>> 
>> OS:Linux
>> ウェブサーバー: Apache2
>> PHP:PHP-4.4.2 (CGI版) 
>> MySQL:MySQL-4.0.24 
>> 
>> あるセッション($_SESSION['xxx']['yyy'])に保存した値をSQL(select文)の
>> 条件に連結して実行しています。
>> 
>> が、
>> $_SESSION['xxx']['yyy'] = aa;
>> の場合
>> SELECT * FROM TableName WHERE fe = aa
>> を想定しているのですが
>> SELECT * FROM TableName WHERE fe = 214826379.1200040891.1.1.utmccn=(
>> direct)|utmcsr=(direct
>)|
>> utmcmd=(none) )
>> 
>> などとなってしまうことがあります。
>> 当然SQL実行エラーが返ってきます。
>> 暫定で$_SESSION['xxx']['yyy']が予想値以外の場合はSQLを実行しないようにし
>> ましたが
>> 根本的な解決ではないと思います。
>> 
>> 実行環境(クライアント側、ブラウザ?)が異なると現象がでない
>> 場合もどうやらあるようです。
>> 
>> HTTP_COOKIEの値らしいことはわかったのですが、これの原因と対策
>> がわかりません。
>> 
>> よろしくお願いいたします。
>> _______________________________________________
>> PHP-users mailing list  PHP-users @ php.gr.jp
>> http://ml.php.gr.jp/mailman/listinfo/php-users
>> PHP初心者のためのページ - 質問する前にはこちらをお読みください
>> http://oldwww.php.gr.jp/php/novice.php3
>> 
>_______________________________________________
>PHP-users mailing list  PHP-users @ php.gr.jp
>http://ml.php.gr.jp/mailman/listinfo/php-users
>PHP初心者のためのページ - 質問する前にはこちらをお読みください
>http://oldwww.php.gr.jp/php/novice.php3


PHP-users メーリングリストの案内