1

私は実際にこれを調べるのに数時間を費やしましたが、これまでのところ、私のケースで機能するものは何も見つかりませんでした(少なくとも私が知る限り、基地をすでにクリアしていたので)。状況は次のとおりです。

システムに Cookie を書き込むスクリプトを作成しました。それをいじって、すべてがどのように機能するかを学んだ後、問題なく動作するようになりました... Localhost. 私はサイトの残りの部分を完成させ、すべてがうまく機能することを嬉しく思いました! しかし、その後、サイトを Web ホストに移動しました。1 つの大きな問題を除いて、このサイトは依然として優れています。Cookie が書き込まれることはありません。私はその理由を理解できず、ファイルを 777 にしましたが (ファイルは今のところまだ「プライベート アドレス」にあります)、まだ Cookie を書き込みません。そこで、ここに疑似コードを示します。誰かが私がどこで間違っているか、または何をチェックする必要があるかを理解してくれることを願っています.

if (isset($_GET['name']))
{ 
$_COOKIE["name"] = $_GET['name'];
$name = $_GET['name'];
$cexp = time()+60*60*24*3650;
setcookie("name", "$name", $cexp, "/");
}

そのため、パス変数の後に URL を追加するように言われています。私もこれを行いました(「.example.com」形式を使用)が、影響はありませんでした。

私を混乱させているのは、今でもこのコードがローカルホストで問題なく動作することです (そして、ドメイン "localhost" に書き込まれた Cookie を確認できます) が、ホストされたサーバーではまったくうまくいきません。

どんな質問にもできる限りお答えします。

前もって感謝します!


編集:これを手伝ってくれてありがとう!私はクッキーが初めてなので、これは未踏の領域でした。自分のサーバーで動作する場合は、実際のホストでも動作するはずだと思いました。そして、私たちは皆、仮定するとどうなるかを知っています...

したがって、同様の問題を抱えている他の人にとっては、適切なコードは次のとおりです。

if (isset($_GET['name']))
{ 
$name = $_GET['name'];
$cexp = time()+60*60*24*3650;
setcookie("name", "$name", $cexp, "/");
$_COOKIE["name"] = $_GET['name'];
}

または、最後の行を省略することもできます。ページを更新しなくてもデータを利用できるように、フォールバックとしてそこに持っています(テキストボックスに残しておきたい情報を処理するため)。また、このようなものはページの上部にある必要があります。私が抱えていた大きな問題は、ヘッダー、メイン、フッターの php ファイルがそれぞれ独自の div にある 3 つの部分からなるサイトを使用することでした。Cookie は div を開始する前に処理する必要があるため、今すぐコードを再編成する必要があります。

ありがとうございました!

4

1 に答える 1

0

これを試してください:

session_start();

$test = "cheese";
$cexp = time() + (60*60*24*3650);

setcookie("test", $test, $cexp, "yourdomain.extension");

if(isset($_COOKIE["test"])) {
    echo $_COOKIE["test"];
}
else {
    echo "Refresh Page!";
}
于 2013-06-02T02:08:16.507 に答える