Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Obrona przed wieloma zakładkami w przeglądarkach...
Forum PHP.pl > Forum > PHP
ksenonlogin
Witam

Chcę wprowadzić do mojego cms-a w panelu administratora ograniczenie polegające na możliwości przeglądania tylko jednej aktywnej zakładki, natomiast przy otwarciu dodatkowej zakładki przy aktywnej pozostałej ma być wyświetlane ostrzeżenie zamiast treści docelowej danej zakładki.

Z takiego systemu korzystają obecnie strony banków, więc jest to możliwe - tylko jak to zrobić bez zbędnego kombinowania...?


Z góry dzięki za odpowiedzi czy jakieś wskazówki wink.gif
nospor
Cytat
Z takiego systemu korzystają obecnie strony banków,
O ile na stronie banku rozumiem taki motyw, to jakby mi ktoś kazał działać na takim cms, gdzie nie mogę mieć kilku zakładek, to nieźle bym w myślach tego kogoś zjechał....
uupah5
Cytat
Chcę wprowadzić do mojego cms-a w panelu administratora ograniczenie polegające na możliwości przeglądania tylko jednej aktywnej zakładki, natomiast przy otwarciu dodatkowej zakładki przy aktywnej pozostałej ma być wyświetlane ostrzeżenie zamiast treści docelowej danej zakładki.

jedna z możliwych implementacji:
buttony/linki i inne elementy nawigacyjne opierasz o <input>
całość zawarta jest w formularzu gdzie w polu hidden dajesz zakodowane dane związane z sesją, identyfikujące usera i kontekst.
otwarcie strony w nowej karcie nie będzie możliwe - strona w nowej zakładce nie będzie zawierała danych z pola hidden, czyli niezbędne będzie zalogowanie na każdej nowej zakładce (efekt jakbyś pracował jednocześnie w niezależnych przeglądarkach)
to zarys rozwiązania, opisałem główne elementy występujące po stronie klienta.

hind
przede wszystkim to JS albo formularze POST
Thommee
  1. <?php
  2.  
  3. $currentCode = isset($_GET['currentCode']) ? $_GET['currentCode'] : '';
  4.  
  5. if (isset($_SESSION['expecedCode'])) {
  6. if ($_SESSION['expecedCode'] !== $currentCode) {
  7. // session_destroy();
  8. throw new Exception('Nieautoryzowany dostęp');
  9. }
  10. }
  11.  
  12. $expectedCode = sha1(session_id() . microtime(true));
  13. $_SESSION['expecedCode'] = $expectedCode;
  14.  
  15.  
  16. ?>
  17. <!DOCTYPE html>
  18. <html lang="pl">
  19. <head>
  20. <meta charset="utf-8">
  21. <script type="text/javascript" src="jquery.js"></script>
  22. <script type="text/javascript">
  23. var currentCode = '<?php echo $expectedCode?>';
  24.  
  25. $(document).ready(function(){
  26. $("a").live('click', function(e){
  27. e.preventDefault();
  28. location.href = $(this).attr('href') + '&currentCode=' + currentCode;
  29. });
  30. $('form').live('submit', function(){
  31. $(this).attr('action', $(this).attr('action') + '&currentCode='+currentCode);
  32. });
  33. });
  34.  
  35. </script>
  36. </head>
  37. <body>
  38. <a href="?some=data">link</a>
  39. <p><?php echo date('H:i:s'); ?></p>
  40. </body>
  41. </html>
  42.  


Masz tutaj prosty przykład "na szybko". Potrzeba jquery.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.