0

Cookie の値に基づいて異なるコンテンツを表示するサイトでの作業。例えば:

http://peewee.betaforming.com/

対。

http://peewee.betaforming.com/?cu=10010

すべてのページに関数が含まれているため、その値はどのページでも設定できます。Cookie が設定されているか、既に保存されている場合は、その CU の情報が読み込まれます。Cookie の値が設定されていないか、DB に存在しない値が渡された場合、サイトはデフォルトの情報を表示します。

これが問題です。Cookie 値が設定されていない状態から、"?cu=10010" がページに添付されたサイトを要求するようになった場合、現在のページは更新されるまで現在のデータをロードしません。

私が読んだことから、 header("location.... を使用してページを更新する必要がありますが、その Cookie 値に基づいて行う必要があるすべてのことを考えると、どこでそれを行うのかわかりません。

Cookie を設定/取得するための関数ファイル内の関連コードを次に示します。

// CU cookies

    if (isset($_GET["cu"]) && is_numeric($_GET["cu"])) {

        $pass_cu = $_GET["cu"];

        // See if passed value returns an active CU record

        mysql_select_db($database_peewee, $peewee);
        $query_rs_valid_cu = "SELECT * FROM tbl_cus WHERE cu_id = $pass_cu";
        $rs_valid_cu = mysql_query($query_rs_valid_cu, $peewee) or die(mysql_error());
        $row_rs_valid_cu = mysql_fetch_assoc($rs_valid_cu);
        $totalRows_rs_valid_cu = mysql_num_rows($rs_valid_cu);

        if ($totalRows_rs_valid_cu != 0) {

            // Set cookie

            $peewee_cu_querystring = $_GET["cu"];
            $expire_month = time()+60*60*24*30; //30 days

            //kill current cookie

            setcookie("peewee_cu", "", time()-10);

            //set new cookie

            setcookie("peewee_cu", $peewee_cu_querystring, $expire_month, "/");

        }

        mysql_free_result($rs_valid_cu);

    }

    // See of cookie exists

    if ((isset($_COOKIE['peewee_cu'])) && $_COOKIE['peewee_cu'] != "") {

        $cu_cookie_value = $_COOKIE['peewee_cu'];

        // Set values for getting CU record

        $colname_rs_cu_data = $cu_cookie_value;
        $load_custom_cu = 'true';

    } else {

        // Set defualt CU value

        $colname_rs_cu_data = 10000;
        $load_custom_cu = 'false';

    }

// Get and Set CU Information (CU specific or default)

mysql_select_db($database_peewee, $peewee);
$query_rs_cu_data = "SELECT * FROM tbl_cus WHERE cu_id = $colname_rs_cu_data";
$rs_cu_data = mysql_query($query_rs_cu_data, $peewee) or die(mysql_error());
$row_rs_cu_data = mysql_fetch_assoc($rs_cu_data);
$totalRows_rs_cu_data = mysql_num_rows($rs_cu_data);

$cu_sidebar_image = $row_rs_cu_data['cu_logo'];
$cu_sidebar_name = $row_rs_cu_data['cu_name'];
$cu_sidebar_link = $row_rs_cu_data['cu_link'];
$cu_sidebar_address = $row_rs_cu_data['cu_address'];
$cu_sidebar_city = $row_rs_cu_data['cu_city'];
$cu_sidebar_state = $row_rs_cu_data['cu_state'];
$cu_sidebar_postal = $row_rs_cu_data['cu_postal'];
$cu_sidebar_phone = $row_rs_cu_data['cu_phone'];
$cu_sidebar_toll = $row_rs_cu_data['cu_phone_toll_free'];

$cu_meta_title = $row_rs_cu_data['cu_name'];
$cu_tab_title = $row_rs_cu_data['cu_name'];

mysql_free_result($rs_cu_data);

// Set default error page for all pages except home page

$default_error_page = 10007;
$default_error_page_home = 10005;

ありがとう

ブレット

4

1 に答える 1

0

値がわかっている(設定したばかりなので)Cookieを読み取るためだけにページをリロードするのは、少し冗長に思えます。

代わりに、ブラウザから送信された現在のCookie値()または現在のページでそのCookieに割り当てている値()のいずれかに変数を設定するだけです。$_COOKIE['peewee_cu']$peewee_cu_querystring

本当に簡単な方法については(ただし、スーパーグローバルへの書き込みは特にお勧めしません。独自の変数を用意し、スコープを適切に管理することをお勧めします)。PHPセットCOOKIEを参照してください。JQUERYCOOKIEプラグインで変更され、phpで編集できませんか?

ちなみに、同じ名前、ドメイン、パスを持つ新しいCookieは自動的に上書きされるため、新しいCookieを設定する前に古いCookieを削除する必要はありません。

于 2013-03-20T22:22:44.467 に答える