0

以下に示すphpファイルorder.phpを作成しました

<?php
$plan=$_POST['plan'];
$expire= time()+60*60;
if (empty($plan))
{

echo '<p align="center">You did not select any plan.</p>';
}
else
{
$str1= "http://techbr.duoservers.com/hosting-order/?plan=";
$ur=$str1.$plan;
usleep(1500);
setcookie("ur", $ur, $expire);
header( 'Location: http://cheap-webhosting.co.in/signup.php') ;

}
?>

ご覧のとおり、スクリプトは「計画」の値を取得します。そのデータを使用して、 http://techbr.duoservers.com/hosting-order/? plan =44という値を持つCookie を作成します。ここで、44 は計画です。値を指定してから、ページ signup.php にリダイレクトします。signup.phpのコードを以下に示します。

<?php
$ur = $_COOKIE['ur']; 
echo "<iframe frameborder='0'";
echo 'src="';
echo $ur;
echo '" width="100%" height="1100px"></iframe>';
?>

何らかの理由で、order.php ファイルにプラン値を渡すと、Cookie が作成されますが、order.php のリダイレクト コマンドのために自動的に読み込まれる signup.php は、Cookie ur を読み取ることができません。ただし、単純な<?php print_r($_COOKIE); ?>クッキーを実行すると、正しい値が表示されます。その上、signup.php を手動で読み込むと、ページは問題なく読み込まれます。ただし、リダイレクト コマンドを使用して自動的に読み込まれる場合、Cookie を読み取ることができません。何が間違っているのですか?1 か月ほど前には問題なく動作していたコードが、突然動作しなくなったことを付け加えておきます。

4

1 に答える 1

2

他の url/path 用に作成された Cookie を読み取ることはできません。

ディレクトリ専用のCookieを作成しましたhttp://techbr.duoservers.com/hosting-order/(関数の4番目のパラメータを省略したためpathset_cookiephpは現在のディレクトリを選択します。以下の引用を参照してください)

別のものでアクセスしてみてください:http://cheap-webhosting.co.in/

あなたはそれを行うことはできません..たとえば、Cookieパスパラメーターを「/」に強制する必要があります。

PHPドキュメントを参照してください:

道:

Cookie が使用可能になるサーバー上のパス。「/」に設定すると、Cookie はドメイン全体で使用可能になります。「/foo/」に設定すると、Cookie は /foo/ ディレクトリと、ドメインの /foo/bar/ などのすべてのサブディレクトリ内でのみ利用可能になります。デフォルト値は、Cookie が設定されている現在のディレクトリです。

ソース: http://php.net/manual/en/function.setcookie.php

于 2012-10-22T09:59:47.353 に答える