Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    2

    [PHP] incremento contatore di sessione e schede multiple

    Buongiorno ragazzi,
    ho un problema che non riesco a risolvere, spero possiate aiutarmi.
    Ho una pagina HTML che richiama le funzioni javascript incremCount() e decremCount() sull'onload e onbeforeunload del body:

    codice:
    <body alink="#FFFFFF" link="#FFFFFF" vlink="#FFFFFF" onLoad="incremCount();" onBeforeUnload="decremCount();">
    a questo punto, all'interno dello script definisco le due funzioni, incrementando e decrementando la variabile di sessione $_SESSION['sesCount']

    codice:
    function incremCount(){ 
    <?php if(isset($_SESSION['sesCount'])){
     	 if ($_SESSION['sesCount'] > 0) {
     		// ho già la sessione aperta
             }
     	 else{
     		// OK
     	 } 	 
             $_SESSION['sesCount'] = $_SESSION['sesCount'] + 1; 
    	 }
     else{
     	 $_SESSION['sesCount'] = 1; } ?> ;
    
      alert(<?php echo $_SESSION['sesCount'] ?>);
    }   
    
    function decremCount(){
     <?php $_SESSION['sesCount'] = $_SESSION['sesCount'] - 1;?> }
    L'obiettivo di questo è controllare che non siano aperte due schede contemporaneamente nello stesso browser: in tal caso il contatore si troverebbe a 1 prima dell'incremento (e quando faccio l'alert dovrebbe darmi 2).
    In realtà pur aprendo più schede ottengo sempre 1. Idee di dove sbaglio?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    2
    ho cercato di semplificare al massimo il mio codice... ma continuo a non capire il motivo dell'errore. Ecco qui ciò che dovrebbe fare la pagina all'apertura e prima della chiusura, nello script:

    codice:
    window.onload = function (){
     alert("
    	<?php
     	if(isset($_SESSION['sesCount'])){
     		echo 'errore!';
     	}
     	else{
     		$_SESSION['sesCount']='blabla';
     		echo 'ok';
     	}
          ?> ");
     }  
    
    window.onbeforeunload = function(){
     	<?php unset($_SESSION['sesCount']); ?>
     }
    Se apro una nuova scheda con la stessa pagina ottengo 'ok', mentre non avendo mai fatto unset della variabile dovrei avere 'errore!'.
    Nessuno così gentile da darmi una mano?

  3. #3
    il problema è che non puoi richiamare codice php da funzioni javascript in quel modo... come dico sempre: una volta che il browser carica la pagina e il javascript viene eseguito, php ha smesso di lavorare da quel dì e non può più essere utilizzato... ovvero che javascript è lato client mentre php è lato server, quindi direttamente non parlano i due... una soluzione è usare chiamate ajax a pagine php che eseguano il set/unset della session, chiamate ajax fatte dalle funzioni javascript ovviamente.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.