2017-01-04 2 views
1

In der Hoffnung, jemand kann mir helfen, habe ich versucht, meine Forschung online zu tun, bevor Sie fragen.Modal pop up nur für neue Benutzer - bootstrap, php, js

Ich arbeite gerade an einem (willkommenen) Bootstrap-Modal, das ich bereit habe zu gehen. Ich arbeite in einer PHP-Umgebung und ich bin ein Super-Neuling für PHP und JS. Momentan habe ich es so, dass es nur einmal per Cookie auftaucht.

<script type="text/javascript"> 
    $(document).ready(function() { 
     if (document.cookie.indexOf("shown=true")<0) { 
      var show = function(){ 
       $('#myModal').modal('show'); 
      }; 

      $(window).load(function(){ 
       var timer = window.setTimeout(show,500); 
      }); 
     } 

     document.cookie = "shown=true; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/"; 
    }); 
</script> 

Meine Fragen ist, dass es zur Zeit für alle aktuellen Benutzer angezeigt wird, und ich will es nur für Neuanmeldungen nur auf der Indexseite angezeigt werden soll.

dh: Benutzer meldet sich an -> klickt Register -> Benutzer wird zur Indexseite genommen, wo bootstrap modal erscheint (nur einmal).

Gibt es eine Möglichkeit, dies zu tun? Gehe ich das richtig? Clientseite vs Serverseite? Jede Hilfe würde sehr geschätzt

Vielen Dank im Voraus.

capt.poopypants

+0

Wenn ich Sie richtig verstehe Sie die „Show nur einmal“ bekommen Teil mit Hilfe von Cookies nach unten. Sie können '$ _SERVER ['HTTP_REFERER']' verwenden, um zu überprüfen, ob der Benutzer von der Registrierung kommt und dann, wenn das wahr ist, das Modal anzuzeigen. – Mihailo

Antwort

0

Wenn Sie es auf der Client-Seite werden zu handhaben ist besser local zu verwenden. Aber wenn Sie es auf der Client-Seite haben, wird es nur zurückgesetzt, wenn der Browser-Cache gelöscht wird, und wird nicht funktionieren, wenn sich ein zweiter Benutzer im selben Browser registriert. Wenn Sie all diese Fälle behandeln wollen, sollten Sie eine Flagge vom Server holen, um Sie wissen zu lassen, ob Sie das Modal zeigen sollten oder nicht. Aber wenn Sie mit dem Client-Seite Ansatz gehen, können Sie Ihren Code ändern, Cookies zu entfernen und mit localstorage:

<script type="text/javascript"> 
    $(document).ready(function() { 
     var wasModalShown = localStorage.getItem('wasModalShown'); 
     if (!wasModalShown) { 
     localStorage.setItem('wasModalShown', true); 
     var show = function() { 
      $('#myModal').modal('show'); 
     }; 

     $(window).load(function() { 
      var timer = window.setTimeout(show, 500); 
     }); 
     } 
    }); 
</script>