Ascunde un div bazat pe sesiune pe php

Am un div care conține un cursor atunci când pagina de pornire a site-ului este deschisă. Ce încerc să realizez este că atunci când site-ul este deschis pentru prima dată, trebuie să apară cursorul. Cu toate acestea, dacă utilizatorul merge într-o altă pagină decât pagina principală și apoi revine din nou la pagina de pornire, glisorul nu ar trebui să apară.

Mai jos este codul pe care încerc să îl pun în aplicare:

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

<?php putRevSlider("typewriter-effect", "homepage") ?>
</div>
0
unde setați prima_load var?
adăugat autor ThisGuyHasTwoThumbs, sursa
Utilizați un modul cookie sau o sesiune. Verificați dacă modul cookie/sesiune există sau nu. Dacă nu, afișați glisorul și setați modul cookie/sesiune, dacă există, nu afișați glisorul.
adăugat autor Magnus Eriksson, sursa

5 răspunsuri

Modul recomandat ar fi setarea unui cookie folosind setcookie() și getcookie() ( http://php.net/manual/de/features.cookies.php ).

Dacă doriți să utilizați sesiunea, atunci setați "first_load" incorect. Asigurați-vă că pentru orice apel de pagină:

session_start();//before you do anything else 

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

... și să fals în orice alt caz.

Singurul motiv pentru care acest lucru ar putea merge prost este dacă vă reinitializați sesiunea greșită. Asigurați-vă că sunteți în aceeași sesiune după ce ați schimbat paginile.

0
adăugat

Ai putea încerca ceva de genul asta

// 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
adăugat
Deoarece acest lucru nu funcționează ca în cazul codului de mai sus, pagina nu se încarcă.
adăugat autor user38208, sursa
Pagina este doar necompletată. <? PHP a fost pusă încă nicio modificare
adăugat autor user38208, sursa
Sunt de acord. De asemenea, simt că o idee mai bună ar fi să folosiți un cookie. Să nu folosești stiluri inline și să rămâi la un fel de convenție de numire. Cu toate acestea, nu știm dacă OP dorește să aibă elementele redate pe pagină, dar ascunse
adăugat autor atoms, sursa
@ user38208 există mesaje de eroare? Încercați să puneți <? PHP la începutul scriptului. Dacă ați setat deja session_start() , nu este necesar să o apelați din nou
adăugat autor atoms, sursa
Probabil ar fi o idee mai bună să nu scoateți glisorul deloc dacă acesta a fost deja afișat. Mai puține date pentru a trimite clientului.
adăugat autor Magnus Eriksson, sursa

Există mai multe moduri de ao realiza, cel mai bine este să verificați dacă pagina de vizitare a utilizatorilor este prima dată

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
adăugat
Ați uitat să setați sesiunea după primul apel. Numai acest cod ar arăta sliderul de fiecare dată.
adăugat autor Magnus Eriksson, sursa

Nu este necesar să afișați div ca afișaj : none . Doar ieșiți div numai atunci când utilizatorul vizitează pagina de pornire pentru prima dată. Utilizați funcția setcookie() pentru a vă aminti că utilizatorul a vizitat deja pagina de pornire, dar rețineți că trebuie să apelați această funcție înainte de orice ieșire.

<?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
adăugat

Nu este necesar să afișați div ca afișaj : none . Doar ieșiți div numai atunci când utilizatorul vizitează pagina de pornire pentru prima dată. Utilizați funcția setcookie() pentru a vă aminti că utilizatorul a vizitat deja pagina de pornire, dar rețineți că trebuie să apelați această funcție înainte de orice ieșire.

<?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
adăugat
PHP România, Moldova
PHP România, Moldova
173 participanți

Vorbim despre Yii, Laravel, Symphony, MySQL, PgSQL, WP, OpenCart... Pentru confort, opriți notificările. Parteneri: https://ciupacabra.com @js_ro @node_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro Joburi: @php_job @Grupuri_IT