Поддержка Проблемы и решения Передача переменой между страницами

  • Всем привет.

    Возможно ли передача переменой или массива с одной страницы на другую для PHP.

    Я пробовал использовать Localstorage и куки.На исходной странице писал через js в localstorage.

    На следующей странице писать из localstorage в куки страницы, а из кук в php получал значения. Однако проблема в том что в куки 2-й страницы записываются значения после загрузки 2-й страницы. А значит еще раз обновлять страницу.

    Как можно иначе решить этот вопрос?

    Через ajax не уверен что получиться т.к. в пути страниц идут пути без указания конечной страницы. например: localhost/project/page1

    есть мысли использовать глобальные переменные.. как пока единственно что пришедшее в голову..

    • Тема изменена 4 года, 2 месяца назад пользователем shiva2019.
    • Тема изменена 4 года, 2 месяца назад пользователем shiva2019.
Просмотр 15 ответов — с 1 по 15 (всего 17)
  • Десяток-другой вариантов есть. А задача изначально какая?

    смотря для чего вам это надо.
    какие-то внешние опции (настройка внешнего вида сайта) в localstorage прекрасно записываются.

    GET уже технология устаревшая? В ВП add_query_arg() функция. И get_query_var() и фильтр query_vars
    Или POST для ajax.
    Не понятна затея — от этого строим только догадки

    Куки можно как с бекенда так и с фронта считывать — тоже вариант. Вы видимо его не правильно готовите.

    Задача такая.

    На одной странице у меня выбирается категория записей. На второй странице мне нужно получить эту категорию, с тем что бы вывести записи в этой категории. А получается корректный вывод только после повторного обновления страницы. Иначе если по страницам туда и обратно походить, у меня с предыдущего захода информация отображается..

    Хотелось бы этот вопрос попроще решить. Попробовал на сессиях. С делал просто 2 отдельных файла что бы проверить как будет работать.
    test1.php

    
    <?php
    if(!isset($_SESSION)){
        echo "нет сесиии. создаем<br>";
        session_start();
    }
    
    echo 'Добро пожаловать на страницу 1'."<br>";
    
    $_SESSION['favcolor'] = 'green';
    
    print_r($_SESSION);
    header ('Location: test2.php');
    

    test2.php

    
    <?php
    session_start();
    echo "страница № 2<br>";
    
    print_r($_SESSION);
    

    Все получилось.

    Однако на страницах wordpress-a если вписать session_start() выдает на экране ошибку:

    session_start(): Cannot send session cache limiter — headers already sent (output started at C:\web\Apache24\htdocs\project\wp-includes\formatting.php:5688)..

    а без session_start() ничего на 2-й странице wordpress-a не передается.

    На 2-й странице аналогичная реакция если в коде прописать session_start();

    на 1-й странице если без session_start() присваиваешь значении сессии то оно есть.
    Но на 2-й странице ничего нет.

    • Ответ изменён 4 года, 1 месяц назад пользователем shiva2019.

    Ура. Все получилось. Через сессии. Надо просто в самом начале файла писать

    session_start();

    Вопрос закрыт.

    Всем спасибо за помощь.

    кривое это решение.
    напрочь отрезает возможность кэширования сайта.

    а как лучше?

    лучше это объяснить, что у вас там в структуре сайта такого, что требуется на одной странице выбирать рубрику, а на другой выводить ее записи.

    Есть страница товаров (пусть страница №1).

    В сайдбаре в виде дерева отображены категории с подкатегорями товаров.

    Например:
    плодовые деревья
    яблоки
    груши

    плодовые кустариники
    смородина
    малина

    т.е. Есть общая категория и в ней подкатегории. Каждая подкатегория содержит записи — товары.

    Зашел на Яблоки например и выводится список всех яблок. Щелкнул по товару в категории яблоки и перешел на страницу описания товара (2-я страница).

    На 2й странице есть слайдер с товарами текущей категории и надпись над ним «Возможно Вас так же заинтересует«.

    Вот для этого слайдера и хочу передавать текущую выбранную категорию.

    В принципе думал вообще рандомную подкатегорию в выбранной категории сделать в слайдер..да заморачиваться пока не стал.. хотя бы текущую вывести для начала уже не плохо

    • Ответ изменён 4 года, 1 месяц назад пользователем shiva2019.
    • Ответ изменён 4 года, 1 месяц назад пользователем shiva2019.

    ппц. то есть у вас открывается товар в какой-то рубрике.
    вы в курсе, что есть штатные способы движка определения текущей рубрики?

    
    $cate = get_queried_object();
    $cateID = $cate->term_id;
    echo $cateID;
    

    Спасибо за информацию.

    Я с WP не так давно начал работать, Ваш вариант попробую применять..тут куда не сунься регулярно делаешь для себя открытия..каждый день что то новое))

    вот код для страницы записи:

    
    global $post;
    $category = get_the_category($post->ID);
    $category = $category[0]->cat_ID;
    

    для вукомерса:

    
    global $post;
    $terms = get_the_terms( $post->ID, 'product_cat' );
    foreach ($terms as $term) {
        $product_cat_id = $term->term_id;
        break;
    }
    

    Спасибо, попробую 🙂

    Есть страница товаров (пусть страница №1).

    В сайдбаре в виде дерева отображены категории с подкатегорями товаров.

    Например:
    плодовые деревья
    яблоки
    груши

    плодовые кустариники
    смородина
    малина

    т.е. Есть общая категория и в ней подкатегории. Каждая подкатегория содержит записи — товары.

    Зашел на Яблоки например и выводится список всех яблок. Щелкнул по товару в категории яблоки и перешел на страницу описания товара (2-я страница).

    На 2й странице есть слайдер с товарами текущей категории и надпись над ним «Возможно Вас так же заинтересует«.

    А разве вот все, что вы написали — это не есть просто обычный Магазин?

Просмотр 15 ответов — с 1 по 15 (всего 17)
  • Тема «Передача переменой между страницами» закрыта для новых ответов.