设置和使用新设置的Cookie值

时间:2013-03-20 22:15:03

标签: php cookies

使用基于Cookie值显示不同内容的网站。例如:

http://peewee.betaforming.com/

VS

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

可以在任何页面上设置该值,因为我在每个页面上都有一个函数include。如果已设置或已保存cookie,则会加载该CU的信息。如果未设置cookie值或传递了DB中不存在的值,则他的站点将显示默认信息。

这是问题所在。如果您从没有cookie值设置到请求任何页面附加“?cu = 10010”的站点,则当前页面在刷新之前不会加载当前数据。

从我读过的内容来看,我需要使用标题刷新页面(“位置....但我不知道我在哪里做了这些,因为我需要根据cookie值做。” p>

以下是函数文件中用于设置/检索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;

由于

布雷特

1 个答案:

答案 0 :(得分:0)

重新加载页面只是为了读取一个你知道它的值的cookie(因为你刚设置它)似乎有点多余。

相反,你需要做的就是设置一个变量 当前的cookie值由浏览器发送($_COOKIE['peewee_cu']你的值'在当前页面上分配给该cookie($peewee_cu_querystring)。

一个非常简单的方法(但请注意:我不特别建议写入超全球,最好有自己的变量并正确管理范围)请参阅PHP sets COOKIE, changed with JQUERY COOKIE plugin, cannot be edited with php?

顺便说一句,在设置新cookie之前,您不需要杀掉旧cookie,因为任何具有相同名称,域和路径的新cookie都会自动覆盖它。