在访问不同页面时用新的cookie更新

时间:2018-08-24 16:37:41

标签: php cookies session-cookies setcookie

我有一个网站,该网站有多个位置,每个位置都有自己的一组信息。当用户访问公司主页时,位置信息将不会显示。然后,当用户转到位置页面时,我会设置一个cookie。

        $location_address = get_field('location_address','options');
        $location_city = get_field('location_city','options');
        $location_state = get_field('location_state','options');
        $location_zip_code = get_field('location_zip_code','options');
        $location_phone_number = get_field('location_phone_number','options');

        // cookie will expire when the browser close
        setcookie("locationAddress",$location_address);
        setcookie("locationCity",$location_city);
        setcookie("locationState",$location_state);
        setcookie("locationZipcode",$location_zip_code);
        setcookie("locationPhone",$location_phone_number);

cookie在Firebug控制台中显示我的位置信息。但是,发生的事情是当我去另一个位置时,它抓住了这两组Cookie。我需要它来用新的cookie替换以前设置的cookie。

这也是我输出cookie的代码,它似乎也坏了:

<div class="top_contact">
                <p><?php if(!isset($_COOKIE[$location_address])) { echo "" . $location_address . "";} ?>, <?php if(!isset($_COOKIE[$location_city])) { echo "" . $location_city . "";} ?> <?php if(!isset($_COOKIE[$location_state])) { echo "" . $location_state . "";} ?> <?php if(!isset($_COOKIE[$location_zip_code])) { echo "" . $location_zip_code . "";} ?> | <span class="top_phone"><?php if(!isset($_COOKIE[$location_phone_number])) { echo "" . $location_phone_number . "";} ?></span> </p>

            </div>

2 个答案:

答案 0 :(得分:2)

您应该在 setcookie 中设置“路径”参数。

setcookie("locationAddress",$location_address, 0, "/");
setcookie("locationCity",$location_city, 0, "/");
setcookie("locationState",$location_state, 0, "/");
setcookie("locationZipcode",$location_zip_code, 0, "/");
setcookie("locationPhone",$location_phone_number, 0, "/");

答案 1 :(得分:0)

如果我是你,我可能会尝试设置cookie的路径。

setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day

此外,我在您的代码中发现了几个逗号,并修复了意大利面条代码。

 <?php 
    echo '<div class="top_contact"><p>';

    if(!isset($_COOKIE[$location_address])) 
       { 
          echo $location_address;
       } 
    if(!isset($_COOKIE[$location_city])) 
       { 
          echo $location_city;
       }
    if(!isset($_COOKIE[$location_state]))
       { 
          echo $location_state;
       } 
    if(!isset($_COOKIE[$location_zip_code])) 
       { 
          echo $location_zip_code;
       } 

    echo '<span class="top_phone">';

    if(!isset($_COOKIE[$location_phone_number]))
       { 
          echo $location_phone_number;
       }
    echo '</span> </p> </div>';
?>