Приховування 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?
додано Автор ThisGuyHasTwoThumbs, джерело
Використовуйте cookie або сеанс. Перевірте, чи існує cookie/сеанс чи ні. Якщо ні, то покажіть повзунок і встановіть cookie/session, якщо він існує, не показуйте повзунок.
додано Автор 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, джерело
Я згоден. Крім того, я вважаю, що найкраще використовувати печиво. Щоб не використовувати вбудовані стилі і дотримуватися певних умов імен. Проте ми не знаємо, чи хоче ОУ все ще мати елементи, які відображаються на сторінці, але приховані
додано Автор 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
додано
Ukrainian PHP comunity
Ukrainian PHP comunity
885 учасників

dev-ua/php