0

私には奇妙に思えるので、これを理解していません-Cookie:最初の実行時に設定したデータがありません。

私のコード、

$booking_time = '12:00';

$timeslots = array(
    array(
        "12:00",
        "12:30",
        "13:00",
        "13:30",
        "14:00",
        "14:30"
    ),
    array(
        "15:00",
        "15:30",
        "16:00",
        "16:30",
        "17:00",
        "17:30"
    )
);
//print_r($timeslots);

$selected_timeslot_start = null;
$selected_timeslot_end = null;
$selected_date = '2013-10-30';

foreach($timeslots as $index => $timeslot)
{
    if(in_array($booking_time, $timeslot)) 
    {
        $selected_timeslot_start = $timeslot[0].':00'; // first item.
        $selected_timeslot_end = end($timeslot).':00'; // last item
        //echo 'from = '.$timeslot[0];
        //echo ' to = '.end($timeslot);
        //print_r($timeslot);

        setcookie("selected_timeslot_start", $selected_timeslot_start, time()+1800 , '/');
        setcookie("selected_timeslot_end", $selected_timeslot_end, time()+1800 , '/');
        setcookie("selected_date", $selected_date, time()+1800 , '/');

    }
}
print_r($_COOKIE);

私はこれを得る、

Array
(
    [__atuvc] => 46|39
    [PHPSESSID] => olvlb3sv6bscvbpkva4d9ev6p3
)

次に、ブラウザで更新を押して、すべてのデータを取得し、

Array
(
    [__atuvc] => 46|39
    [PHPSESSID] => olvlb3sv6bscvbpkva4d9ev6p3
    [selected_timeslot_start] => 12:00:00
    [selected_timeslot_end] => 14:30:00
    [selected_date] => 2013-10-30
)

なぜ - 私が Cookie を使って間違ったことを誰か教えてもらえますか?

4

3 に答える 3

1

はい、これは正しい動作です。Cookie を設定すると、クライアント (ブラウザ) に送信されて設定されるため、最初に Cookie が設定され、ブラウザはサーバーに Cookie を送り返しません。ブラウザは HTTP REQUEST ヘッダー内に Cookie を含めるため、完全なデータが表示されます。

PHPSESSID はセッションに関連しており、以前は使用していたかもしれません。

于 2013-09-29T08:55:52.710 に答える
1

パスパラメータでアポストロフィを使用してはいけません..

setcookie("selected_date", $selected_date, time()+1800 , "/" );

それ以外は、Cookie の設定方法やデータの取得方法に誤りはありません。パスの設定方法を変更してみて、結果をお知らせください。

于 2013-09-29T09:37:24.350 に答える
0

Cookie はクライアントに保存され、ブラウザによって設定されます。http リクエストを Web サーバーに送信すると、ブラウザはリクエストのドメインの Cookie を取得し、Web サーバーに送信します (Cookie は http ヘッダーに含まれます)。Web サーバーは応答メッセージを返します。ヘッダーには、次のような Cookie 情報が含まれる可能性があります。

Set-Cookie: set_cookie=set_value    

ブラウザは Cookie を設定して保存します。関数 setcookie は、Cookie 情報を HTTP 応答メッセージのヘッダーに追加するだけです。

于 2013-09-29T09:28:14.207 に答える