2014-12-17 2 views
1

У меня есть сайт, который построен с php, и я добавил всплывающее окно в файле index.php.Всплывающее отображение только на первой странице веб-сайта

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

Я пытался добавить условие:

if (document.URL == "mymainpage") 

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

Каков наилучший способ показать всплывающее окно только в первый раз, когда пользователь обращается к веб-сайту?

P.S .: Я использую этот код в файле index.php:

<body<?php echo $body_attr;?>> 

<?php 
session_start(); 
$body_attr = ""; 
if(!isset($_SESSION["popup_shown"])) 
{ 
    $body_attr = " onload=\"show('popupContainer')\""; 
    $_SESSION["popup_shown"] = true; 
} 
?> 
<script> 

function show(id) { 

     var e = document.getElementById(id); 
     if(e.style.display == 'block') 
      e.style.display = 'none'; 
     else 
      e.style.display = 'block'; 

    } 
</script> 
<!-- ============== THE POPUP ======================= --> 
<div id="popupContainer" style="display:block; position:fixed; top:0; left:0; background-color:rgba(0,0,0,0.7); height:100%; width:100%; z-index:999;"> 
    <div id="popup" style="border:2px solid white; font-size:20px; line-height:25px; text-align:center; width:75%; margin:0 auto; background-color:#18af8e; position:relative; top:35%; padding:15px; padding-bottom:0px; border-radius:20px;"> 
     <p style="color:white;">Din cauza perioadei foarte aglomerate si a vacantei de sarbatori, comenzile primite dupa <b>20 Decembrie</b> vor fi onorate in ianuarie. 
<br></br> 
Va multumim pentru intelegere si va dorim <b>Sarbatori Fericite!</b></p> 
     <button onclick="show('popupContainer')" style="display:inline; position:absolute; top:-30px; left:100%; padding:0 5px 2px 5px; border-radius:50%; border:2px solid black; background:none; font-weight:bold">x</button> 
    </div> 
</div> 
+3

Каков наилучший способ показать всплывающее окно только в первый раз, когда пользователь обращается к веб-сайту? Использование сессий/файлов cookie –

ответ

1

Почему бы не использовать печенье с PHP?

$popup = "<div class='popup'>This popup is awesome</div>"; 

if($_COOKIE["PopupShown"] != true){ 
    echo $popup; 
} 

setcookie("PopupShown", true); 

Например ..

Больше информации здесь: http://php.net/manual/en/function.setcookie.php

+0

сеансов больше сэкономить, так как они также работают, когда пользователи отключили файлы cookie в своих браузерах (если они не работают с файлами cookie в любом случае). –

0
session_start(); 
if(!isset($_SESSION["popup_shown"])) 
{ 
    echo "//javascript and/or html code to show the popup"; 
    $_SESSION["popup_shown"] = true; 
} 


обновление: в соответствии с вашими комментариями, просто изменить то, что в вашем <body> теге:

session_start(); 
$body_attr = ""; 
if(!isset($_SESSION["popup_shown"])) 
{ 
    $body_attr = " onload=\"show('divid')\""; 
    $_SESSION["popup_shown"] = true; 
} 

в вашем HTML:

<body<?php echo $body_attr;?>> 


Примечание:session_start() должен вызываться до возникновения какой-либо другой выход!

+1

Возможно, session_start(); прежде чем поможет: D –

+0

@MarcoMura, который поможет, если вы не знакомы с сессиями, по крайней мере;) спасибо. –

+0

Мы не знаем, что ОП знает, поэтому я думаю, что всегда лучше указать весь необходимый код;) –

Смежные вопросы