Обновлять куки-файлы новыми при посещении разных страниц - PullRequest
0 голосов
/ 24 августа 2018

У меня есть веб-сайт с несколькими местоположениями, и у каждого местоположения есть свой собственный набор информации. Когда пользователь заходит на главную страницу корпорации, информация о местоположении не отображается. Когда пользователь переходит на страницу местоположения, у меня устанавливается 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, который, похоже, тоже ломается:

<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 голосов
/ 24 августа 2018

Я бы на вашем месте попытался бы указать путь для файлов 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>';
?>
0 голосов
/ 24 августа 2018

Вы должны установить аргумент "путь" в 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, "/");
...