4

私は2つのphpスクリプトを持っています

test.php

<?php
 header("location: test2.php");
 setcookie("test", "8kFL4IZfjkBmV7AC", time()+60*60, '/');
 exit;
?>

test2.php

<?php
 var_dump($_COOKIE);
?>

次に、ブラウザで test.php を指定し、test2.php にリダイレクトします。その後、次の結果が得られます。

Firefoxでは、次のようになります。

array
  'test' => string '8kFL4IZfjkBmV7AC' (length=16)

ただし、IE6では、次のようになります。

array
  'PHPSESSID' => string 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' (length=32)

注: 上記の PHPSESSID を意図的に X しました!

どこが間違っているのか、なぜ IE6 がクッキーを表示しないのか、誰にもわかりません。

前もって感謝します

4

5 に答える 5

3

ローカルホスト環境で作業していますか? IE http://localhostでテストしますか? その場合、設定された Cookie に問題が発生する可能性があります。私の提案は、setcookie のドメイン フィールドを設定することです。localhost で作業している場合は、これを試してください:setcookie("username", "George", false, "/", false); または、localhost 以外のサーバー名で vhost を設定し、それをドメインに使用します。

ドメインで Cookie を設定すると、次のようになります。

setcookie("test", "8kFL4IZfjkBmV7AC", time()+60*60, '/', '.domain.com');

うまくいけば、それが助けになります。

于 2010-07-21T23:18:57.730 に答える
1

私もこの問題を抱えています。私は誰かからのphpウェブサイトでこれに気づきました。

リダイレクトするページに Cookie を設定する場合、header('Location: ....'); の呼び出し後に Cookie を設定する必要があります。

http://php.net/manual/en/function.setcookie.php

まだわからない

于 2010-07-21T21:22:16.970 に答える
0

一部のブラウザーは、ユーザーの操作が発生する前に Cookie の設定を防止します。私は Safari がそうであることを知っていますし、IE も同じように動作すると信じています。基本的に、すべての Cookie は、サイトから受信した最初の応答では無視されます。代わりに次のようなことを試してみると、期待どおりに機能すると思います。

test0.html

<html>
  <body>
    <a href="test1.php">force user interaction</a>
  </body>
</html>

test1.php

<?php
  header("location: test2.php");
  setcookie("test", "8kFL4IZfjkBmV7AC", time()+60*60, '/');
  exit;
?>

test2.php

<?php
  var_dump($_COOKIE);
?>
于 2010-07-22T00:40:25.577 に答える
0

あなたの例を見ると、最初に header() があり、次に setcookie() があります。最初に setcookie() を試してから、header(); を実行します。

于 2010-07-21T21:17:36.933 に答える
0

あるブラウザは、他のブラウザよりも、ヘッダーのリダイレクトに対してより迅速に反応する可能性があります。

コマンドを変えてみてください:

 setcookie("test", "8kFL4IZfjkBmV7AC", time()+60*60, '/');
 header("location: test2.php");
于 2010-07-21T21:14:55.333 に答える