Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [PHP/MySql]Utenti fantasmi, problema aggiornamenti

    Salve a tutti, ho appena terminato la programmazione di un sito dove è indispensabile tracciare un utente.
    Ho creato uno script che al login controlla se l'utente loggato è già inserito negli online, in tal caso provvede ad eliminare il record e a rimpiazzarlo, altrimenti lo insersce negli online semplicemente.
    Nelle pagine successive al login v'è un aggiornamento del campo "tempo" che mantiene l'utente online per 5 minuti. Se un utente non esce correttamente (attraverso il logout) rimane appeso appunto per 5 minuti e viene espulso (quindi il record cancellato).
    Il problema è il seguente:
    quando gli utenti iniziano a superare le 10 persone, gli utenti che vogliono connettersi risultano invisibili.
    Mi spiego meglio: l'utente in questione vede il frame sinistro come se non fosse mai uscito (quindi con le immagini dell'ultima pagina che ha visitato), il più non risulta tra gli online e non riesce ad aggiornare dei campi che lo tracciano all'interno del sito.
    Ho provato a risolvere facendo in modo che l'inserimento negli online fosse sistematico in ogni pagina dopo una verifica dell'effettiva presenza o meno dell'utente.
    Neppure con questo metodo funziona (almeno non a tutti).
    Se devo essere sincero non so più che pesci pigliare, ho controllato e ricontrollato più volte il codice e parrebbe corretto, chiudo sempre le connessioni al database alla fine della pagina.
    Un fatto curioso è che ho provato a spostare di server l'intero sito e li ho notato che non dava più questo problema. Sfortunatamente il server in questione è troppo lento per le mie esigenze.
    Cosa posso fare?

  2. #2
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    il fatto dei 2 comportamenti diversi tra i server mi fa pensare a 2 impostazioni diverse a livello di server (--enable-trans-sid ) e non di client. Hai provato a stampare a scopo di controllo, l'array di sessione ( print_r($_SESSION); )?

    "...A ciò va aggiunto il fatto che le sessioni sono associate ad un identificativo univoco, che viene generato quando si da inizio alla sessione e che solitamente viene conservato in un cookie nella variabile PHPSESSID. Quando i cookie sono disabilitati dobbiamo provvedere noi stessi al mantenimento di questo valore, a meno che in PHP non è attivata l'opzione --enable-trans-sid che lascia a PHP il compito di inserire nei nostri link relativi l'id di sessione. L'assenza dell'id di sessione fa credere a session_start() che si stia iniziando una sessione nuova, e quindi non ci permetterebbe di recuperare i valori salvati e continuare la nostra sessione. "

    Fonte

  3. #3
    Infatti è proprio questo che mi lascia perplesso: printando la sessione la stampa correttamente, anche con gli utenti invisibili, però non provvede all'inserimento in db dell'utente.
    [edit]
    ora che ho dato un occhiata ai rispettivi php.ini, ho notato che effettivamente c'è questa mancanza nel server ufficiale.
    come posso riparare?
    devo per forza cambiare hosting?

  4. #4
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    se non hai accesso a php.ini e se non vuoi cambiare hosting puoi, come alternativa, reimpostare il lavore di --enable-trans-sid con ini_set() , che metti come prima cosa all'inizio del code:

    Codice PHP:
    ini_set('session.use_trans_sid',1); 

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.