【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?

if ($ENV{\'HTTP_COOKIE\'} eq \'hoge1=true\'){
$AAACookie = \'true\';
}else{
$AAACookie = \'false\';
}

上記のような感じでcookieから[hoge1=true]を取ろうとしているのですが、
単体だとうまくいくのですが、Google Analyticsの[__utma]とか[__utmb]等が
入ると[hoge1=true]のデータが入っているのに[AAACookie]の返しが[false]になってしまいます。

回避策等ありますでしょうか?

A 回答 (4件)

「hoge1」という名前で発行したクッキーを確認(読み出し)するなら、



if ($ENV{'HTTP_COOKIE'} =~/hoge1=true/){
$AAACookie = 'true';
}else{
$AAACookie = 'false';
}

でいいんじゃないですか。
※この場合、¥は全部要らないです。(付けるのはおかしい)
    • good
    • 0

if ($data{'hoge1'} eq 'true;'){



のようにしないとだめかも知れません。
cookieの中身を確認してみてください。
    • good
    • 0

そもそも


$ENV{\'HTTP_COOKIE\'} eq \'hoge1=true\'
という判定に問題があるように見えます。
最初からcookieに複数来ることを考慮して、

@cookie = split(/ /, $ENV{\'HTTP_COOKIE\'});
foreach (@cookie) {
($key, $val) = split(/=/);
$data{$key} = $val;
}

のようにして取得、
if ( $data{'hoge1'} eq 'true' )
などで判断された方がよいかと思います。

この回答への補足

色々調べてみて下記のようにしてみました。

local($cookie) = $ENV{'HTTP_COOKIE'};
local(*data, @cookie, $key, $val);
@cookie = split(/ /, $cookie);
foreach (@cookie) {
($key, $val) = split(/=/);
$data{$key} = $val;
}
if ($data{'hoge1'} eq 'true'){
$AAACookie = 'true';
}else{
$AAACookie = 'false';
}

としてみたのですが、[$AAACookie]にfalseが返って来てしまいました。
cookieには、hoge1にtrueが入っている状態です。
どこがおかしいのでしょうか?
何度も申し訳ありませんが、よろしくお願いいたします。

補足日時:2008/12/03 22:58
    • good
    • 0

「Analytics の cookie の名前はすべて _utm から始まり、Analytics とお客様のサイトの間で cookie の名前が競合しないように考慮されています。


とのことなので、_utm から始まるものを除外してはいかがでしょうか?

この回答への補足

_utm から始まるものを除外とは、具体的にどのようにしたら良いのでしょうか?

参考になるURL等載せて頂けるとありがたいです。
よろしくお願いいたします。

補足日時:2008/12/03 18:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!