Visualizzazione dei risultati da 1 a 5 su 5

Discussione: controllo multiutente

  1. #1

    controllo multiutente

    buonasera a tutti,
    sto riprendendo un progetto di qualche anno fa.
    Vorrei evitare che 2 utenti entrino contemporaneamente nella stessa pagina di modifica.
    ho pensato questo:
    quando un utente apre il form di modifica, inserisco una riga nel db con il nome della pagina.
    quando il secondo utente prova ad entrare controllo il db e lo reindirizzo da un'altra parte.

    il problema è intercettare l'abbandono della pagina per lanciare un pagina che esegue una DELETE sulla riga inserita per "riaprire" l'accesso alla pagina.

    codice:
    <script>
        
        $(window).on('beforeunload', function ()
    {
        $.ajaxSetup ({
            async: false  
        });
      
      <? echo "$.get(\"ctrl_multi.php?p=".$pagina."\");"; ?>
        
    });
    
       $(window).on('unload', function ()
    {
        $.ajaxSetup ({
            async: false  
        });
      
      <? echo "$.get(\"ctrl_multi.php?p=".$pagina."\");"; ?>
        
    });
    </script>
    gli eventi singolarmente da intercettare sono: submit del form, chiusura del browser etc...

    grazie

  2. #2
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592
    C'è qualcosa che non è chiaro e da una analisi sommaria io mi permetto di dire..il web è fatto per entrare nella stessa pagina da molti utenti... ma se la pagina ha un oggetto che è lui ad essere coinvolto per un aggiornamento e non deve essere aperto da piu utenti, allora è quello l'oggetto da bloccare, non la pagina...

    ciao
    Vic53

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Quote Originariamente inviata da giovanni12881 Visualizza il messaggio
    buonasera a tutti,
    Vorrei evitare che 2 utenti entrino contemporaneamente nella stessa pagina di modifica.
    In generale, si tratta di una pessima idea, ma se proprio devi farlo io suggerirei una implementazione alternativa: quando accedi alla pagina, periodicamente aggiorni un campo del record interessato dalla modifica inserendo la data/ora corrente e l'utente di riferimento, ripetendo l'operazione ogni 10-15 secondi.

    Per rilevare la modifica, introdurrei nella pagina una ulteriore logica che acquisisce tale data e verifica se è trascorso - ad esempio - almeno un minuto dalla "data di blocco": in caso affermativo, significa che la pagina è stata chiusa dall'altro utente ed è possibile modificare, altrimenti si presenta l'avviso e si impedisce l'operazione in qualche modo.

    Non farei assolutamente affidamento sulla cancellazione di record e qualsivoglia evento legato all'abbandono della pagina o alla chiusura del browser, che sono del tutto fuori dal controllo.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Vi ringrazio entrambi, lo so che é una pessima idea però io sto progettando un gestionale online che potrebbe avere più amministratori. Era solo per evitare la remota possibilità che due amministratori modifichino la stessa fattura o dato nello stesso momento...
    Sviluppero la soluzione suggeritami senza agire sugli eventi del browser

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Quote Originariamente inviata da giovanni12881 Visualizza il messaggio
    Sviluppero la soluzione suggeritami senza agire sugli eventi del browser
    Brutta per brutta, credo sia quella più sicura perché - a patto di cedere qualche secondo nel quale la pagina viene chiusa ma l'elemento risulta per poco ancora "bloccato" - garantisce che qualunque chiusura della pagina o del browser non tenga successivamente bloccato l'elemento, qualunque cosa succeda.

    Tarando ovviamente le tempistiche e i controlli, è possibile rendere più (o meno) stringente il "blocco" virtuale.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.