Скрытие div на основе сессии на php

У меня есть div, который содержит слайдер, когда открывается домашняя страница сайта. Чего я хочу добиться, так это того, что при первом открытии веб-сайта должен появиться слайдер. Однако если пользователь переходит на другую страницу, отличную от домашней страницы, а затем снова возвращается на домашнюю страницу, ползунок не должен отображаться.

Ниже приведен код, который я пытаюсь реализовать:

<div class="homeslidermain" style="display:<?php echo empty($_SESSION['first_load']) ? 'block' : 'none'; ?>"> 

<?php putRevSlider("typewriter-effect", "homepage") ?>
</div>
0
где вы устанавливаете first_load var?
добавлено автор ThisGuyHasTwoThumbs, источник
Используйте куки или сеанс. Проверьте, существует ли файл cookie/сеанс или нет. Если нет, покажите слайдер и установите cookie/сеанс, если он существует, не показывайте слайдер.
добавлено автор Magnus Eriksson, источник

5 ответы

Рекомендованным способом было бы установить cookie с помощью setcookie() и getcookie() ( http://php.net/manual/de/features.cookies.php ).

Если вы хотите использовать сеанс, то вы неправильно устанавливаете «first_load». Убедитесь, что на любой странице звоните:

session_start();//before you do anything else 

if(!isset($_SESSION['first_load']))//set it to true on first load

... и ложь в любом другом случае.

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

0
добавлено

Вы могли бы попробовать что-то вроде этого

// start the session 
session_start();

// set to false
$bShowBanner = false;

// if not set set to true and set session var
if(!isset($_SESSION['BannerShown'])){
    $bShowBanner = true;    
    $_SESSION['BannerShown'] = true;
}
?>

<div class="homeslidermain" style="display:<?php echo ($bShowBanner ? 'block' : 'none'); ?>"> 
    <?php putRevSlider("typewriter-effect", "homepage") ?>
</div>
0
добавлено
@atoms это не работает как с приведенным выше кодом, страница не загружается.
добавлено автор user38208, источник
Страница просто пуста. <? PHP добавлено без изменений
добавлено автор user38208, источник
Согласен. Также я чувствую, что лучшей идеей будет использование куки. Не использовать встроенные стили и придерживаться какого-либо соглашения об именах. Однако мы не знаем, желает ли OP, чтобы элементы отображались на странице, но были скрыты
добавлено автор atoms, источник
@ user38208 есть ли сообщения об ошибках? Попробуйте поместить <? PHP в начало скрипта. Если вы уже установили session_start() , вам не нужно вызывать его снова
добавлено автор atoms, источник
Вероятно, было бы лучше вообще не выводить ползунок, если он уже был показан. Меньше данных для отправки клиенту.
добавлено автор Magnus Eriksson, источник

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

session_start();
if(!isset($_SESSION['first_load']))
{
   $_SESSION['first_load'] = '1';
}
if(empty($_SESSION['first_load']))
{?>
   <div> 
    Slider block// this block loads only is first load is empty
   </div>

<?php
}?>
0
добавлено
Вы забыли установить сеанс после первого звонка. Один только этот код будет показывать слайдер каждый раз.
добавлено автор Magnus Eriksson, источник

Нет необходимости выводить div как display: none . Просто выводите div только при первом посещении пользователем домашней страницы. Используйте функцию setcookie() , чтобы запомнить, что пользователь уже посетил его домашнюю страницу, но учтите, что вам следует вызывать эту функцию перед любым выводом.

<?php

if (empty($_COOKIE['homepage_visited'])) {
   //Remember the first visit for one year
    setcookie('homepage_visited', 1, strtotime('+1 year'));

   //Show the slider
    echo '<div class="homeslidermain">';
    putRevSlider("typewriter-effect", "homepage");
    echo '</div>';
}
0
добавлено

Нет необходимости выводить div как display: none . Просто выводите div только при первом посещении пользователем домашней страницы. Используйте функцию setcookie() , чтобы запомнить, что пользователь уже посетил его домашнюю страницу, но учтите, что вам следует вызывать эту функцию перед любым выводом.

<?php

if (empty($_COOKIE['homepage_visited'])) {
   //Remember the first visit for one year
    setcookie('homepage_visited', 1, strtotime('+1 year'));

   //Show the slider
    echo '<div class="homeslidermain">';
    putRevSlider("typewriter-effect", "homepage");
    echo '</div>';
}
0
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

Чат — Типичный Верстальщик
Чат — Типичный Верстальщик
1 080 участник(ов)

Основной канал: @tpverstak Обратная связь: @annblok Все ссылки на соц.сети проекта: http://taplink.cc/tpverstak ПРАВИЛА ЧАТА — https://teletype.in/@annblok/BygPgC3E7

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp

Веб-Технологи: UI/UX, Вёрстка, Фронтенд
Веб-Технологи: UI/UX, Вёрстка, Фронтенд
167 участник(ов)

Всё про веб-дизайн и вёрстку. А также: HTML, CSS, флекс и бутстрапы, шаблонизаторы, препроцессоры, методологии, аглифаеры, улучшаторы и обфускаторы. Обсуждаем темы юзабилити, устраиваем А/В тесты лендингов, и проводим аудит.

DTP :: @DTPublish
DTP :: @DTPublish
147 участник(ов)

Обсуждаемые темы: полиграфия, препресс, верстка, дизайн, иллюстрации, скрипты, плагины. Канал - @DTPublishing