Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1

    [php]abilitare sessioni solo in casi particolari

    mi hanno chiesto di fare un'area riservata con le seguenti caratteristiche:
    ci sono diversi livelli di utenti e la gerarchia l'ho creata tranquillamente; la cosa che non mi è molto chiara e che non so come realizzare è il fatto che gli utenti del livello più basso possono accedere all'area solo se il supervisore è loggato.

    Io utlizzo le sessioni per fare l'accesso, ma come faccio a verificare se il supoervisore è loggato?? :master:

    sapete darmi qualche dritta? grazie mille
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  2. #2
    il log sarà fatto in db e se è in db al momento del log metti in una tabella che quell' utente e' loggato ... e i sottoutenti se troveranno qualcuno loggato entreranno altrimenti no ... la cosa importante è dire che il loggato per uscire dovrà per forza di cose usare il tasto logout, altrimenti devi utilizzare altri stratagemmi sempre poco congeniali o non eccessivamente affidabili
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Quando un utente ha la sessione attiva viene salvato un file di sessione (con session_save_path() vedi dove).
    Quando scade il tempo predefinito dall'ultimo click questo file dovrebbe scomparire.
    Quello che puoi fare secondo me è salvare in un db il nome del file di sessione del supervisore e la data del suo ultimo click.
    Una volta fatto, controlli che il file esista e che l'ultimo click sia fatto almeno tot secondi fa.

  4. #4
    Originariamente inviato da andr3a
    il log sarà fatto in db e se è in db al momento del log metti in una tabella che quell' utente e' loggato ... e i sottoutenti se troveranno qualcuno loggato entreranno altrimenti no ... la cosa importante è dire che il loggato per uscire dovrà per forza di cose usare il tasto logout, altrimenti devi utilizzare altri stratagemmi sempre poco congeniali o non eccessivamente affidabili
    eh la storia del salvataggio in db sarebbe perfetta, ma se uno non mi clicca su log-out cosa posso fare? quali staratagemmi intendi?
    Io ho messo tanto di bottone con frase per scollegarsi, ma se qualcuno chiude la finestra senza passare dal log-out sono fregato, a meno che non segua appunto glistratagemmi di cui parlavi, ma non so quali
    D'altronde sono più di una 50ina di utenti che si collegano, essendo un call center...


    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  5. #5
    Originariamente inviato da Teuzzo
    Quando un utente ha la sessione attiva viene salvato un file di sessione (con session_save_path() vedi dove).
    Quando scade il tempo predefinito dall'ultimo click questo file dovrebbe scomparire.
    Quello che puoi fare secondo me è salvare in un db il nome del file di sessione del supervisore e la data del suo ultimo click.
    Una volta fatto, controlli che il file esista e che l'ultimo click sia fatto almeno tot secondi fa.

    ma session_save_path() non mi restituisce solo il path? io come faccio a sapere che nome ha il file? e il file ha un unico nome o cambia a seconda dell'utente loggato? riesci a darmi delle dritte?


    grazie!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  6. #6
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Il nome del file è sess_ seguito dal session_id(); dell'utente.
    Vai a vedere nella cartella session_save_path();

  7. #7
    si ho visto, ho fatto un piccolo script per vedere il contenuto della cartella.

    Però ora mi sorge un dubbio, un altro
    io ho visto che in quella cartella ci sono molti files (anche perché ora stanno lavorando e sono collegati in molti) ma quello che volevo dire io è, come faccio a sapere a priori l'id di sessione del supervisore?
    cioè mettiamo, io sono qui e lui si collega dal suo pc a casa sua...mi genera un id univoco, no? quindi io con cosa posso confrontare per vedere se lui è loggato? non so se sono riuscito a spiegarmi
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  8. #8
    le sessioni non scadono quando l'utente va via, il file rimane li ... quindi te le sconsiglio vivamente.

    Il discorso è questo, se sei in intranet, fai un refresh di 30 secondi in 30 secondi, se sei online fai un refresh di 2 minuti in 2 minuti ... il refresh lo fai solo per gli admin o moderatori, quelli che devono comunicare lo stato.

    Se loro non refreshano ed hanno un time() < time() - 120 ... allora ciao, non ci sono più .. e qualora avessero problemi di banda, ciao lostesso, li cacci fuori brutalmente, quando tornano a funzionare si riloggano ...

    il modo più semplice che m'è venuto in mente ora.

    come fai il refresh ? ... AJSHP ... oppure un qualche ajax
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #9
    Non credo che leggere i file di sessione sia la via giusta. Non puoi sapere chi ha aperto un file di sessione. La scadenza e' data dalla data ora di ultima modifica + time out di inattivita'.

    Potresti fare una cosa... assegnare tu un session_id# oppure salvare il session_id e il timestamp assegnato alla connessione del supervisore e poi verifichi se al momento della connessione di altri succedanei il tempo di validita' della sessione permane oppure se scaduto.

    Rimane sempre da valutare come gestire i tempi di latenza tra l'assenza / abbandono senza logout del supervisore e il tempo di scadenza della sessione per inattivita'. Ed anche la permanenza del succedaneo se non dovesse chiudere il browser, dovresti controllare la validita' della sua sessione ad ogni pagina oppure ad ogni refresh.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Originariamente inviato da andr3a
    ...
    non sono in una intranet ma è un sistema online

    questo del refresh è abbastanza chiaro, non fosse per un paio di cose: la prima è che non conosco AJSHP, e ajax l'ho usato una sola volta e dovrei documentarmi, ma questo è relativo, se non mi documento non risolverò mai nessun problema... Comunque, con ajax basta che io faccia ad esempio un refresh in un "iframe" e la cosa è risolta? la sessione mi si "aggiorna"?



    Originariamente inviato da piero.mac
    ...
    si in effetti io pensavo di controllare la validità della sua sessione appunto ad ogni pagina
    Quindi nel momento in cui lui si logga io salvo la sua sessione con l'id in un db insieme ad un timestamp o datetime (penso vada bene anche quello no? tanto a me serve solo l'ora...) e ad ogni accesso ad una pagina (o refresh) vado a prelevare dal db quell'ora e vedo se la sessione è ancora valida...giusto?










    Grazie mille a tutti per gli aiuti!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

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.