Joomla.it Forum

Joomla! 3 => Joomla! 3 => : Fabrizio Fiorita 23 Mar 2016, 18:22:35

: Impossibile identificare gli utenti abilitati all'accesso (-> "Downgrade a 3.4")
: Fabrizio Fiorita 23 Mar 2016, 18:22:35
Buongiorno.
Dopo l'aggiornamento a 3.5.0 ha smesso di funzionare una parte del Portale che gestisco per conto di una ONLUS.
Per la precisione si tratta dell'accesso, da parte di un numero limitato di Dirigenti della ONLUS, ai dati di un database riservato, collocato sullo stesso server che ospita il Portale.
In sintesi, la mia pagina php che consente l'individuazione di chi accede e recupera dal database le credenziali ed i limiti dell'accesso non riesce più ad individuare l'utente autorizzato.
Dal codice php che riporto:
:
/* Acquisizione dei dati dell'utente del Portale Telematico.*/
             define( '_JEXEC', 1 );
             define( 'DS', DIRECTORY_SEPARATOR );
             define( 'JPATH_BASE', realpath(dirname(__FILE__).'/..' ));
             require_once( JPATH_BASE . DS . 'includes' . DS . 'defines.php' );
             require_once( JPATH_BASE . DS . 'includes' . DS . 'framework.php' );
             require_once( JPATH_BASE . DS . 'libraries' . DS . 'joomla' . DS . 'factory.php' );
             $mainframe = & JFactory::getApplication('site');
             $db =& JFactory::getDBO();
             $reg_user = & JFactory::getUser();
             $codice = $reg_user->name;
ho individuato modifiche ai files define.php, framework.php e factory.php.
Vorrei sapere, per cortesia, quali modifiche dovrei apportare al mio codice php per farlo funzionare nuovamente.
Grazie
Fabrizio
: Re:Impossibile identificare gli utenti abilitati all'accesso
: Fabrizio Fiorita 24 Mar 2016, 19:46:20
Ho consultato i vari articoli su Joomla! e il mio codice, secondo le istruzioni, dovrebbe funzionare (ed ha sempre funzionato da tre anni in qua, fino all'aggiornamento 3.5.0).
Una cosa mi rende perplesso:
- se scrivo getUser(mionumerodiuser) vengo regolarmente riconosciuto.
- se scrivo getUser() non funziona l'individuazione dell'utente attualmente loggato.
Dove può essere l'inghippo?
Qualcuno può darmi lumi? Grazie.
Fabrizio
: Re:Impossibile identificare gli utenti abilitati all'accesso
: MariaElenaBoschi 24 Mar 2016, 20:26:03
se metti il tuo id ti ritorna il tuo username ma se ne metti un altro te ne ritorna un altro... fa quello che gli chiedi.

se non passando nulla non ti da nulla vuol dire che in quel punto dove usi quella funzione non hai ancora "disponibile" l'id dell'user loggato
: Re:Impossibile identificare gli utenti abilitati all'accesso
: Fabrizio Fiorita 24 Mar 2016, 21:45:04
Se leggi bene i manuali di Joomla! vedrai che se metti un id ti viene restituito il dato dell'utente registrato corrispondente, ma se non metti nulla ti viene restituito il dato dell'utente corrente.
Ha sempre funzionato, per oltre tre anni, e adesso non funziona più dopo l'aggiornamento a 3.5.0. Quindi il problema non sta nel mio codice, sta in qualche file di sistema aggiornato.
: Re:Impossibile identificare gli utenti abilitati all'accesso
: MariaElenaBoschi 25 Mar 2016, 21:38:04
infatti, JFactory funziona benissimo perchè come dici se gli metti un id te lo restituisce, il problema è che se non glielo metti ; nel punto in cui hai inserito il codice, il tuo id user non è ancora definito probabilmente
: Re:Impossibile identificare gli utenti abilitati all'accesso
: Fabrizio Fiorita 25 Mar 2016, 22:10:58
Il mio ID User è perfettamente definito, risulto utente connesso nel pannello di controllo dell'Amministratore, nella tabella Users sul Database risulta l'ultimo accesso.
La mia domanda - non risposta - è questa: la funzione JFactory::getUser() ha dato risultati precisi dal maggio 2012 (J 1.6) ed attraverso tutti i successivi upgrades, fino a J 3.4. Ha smesso di funzionare qualche giorno fa, con l'aggiornamento a 3.5.0.
Perché?
Se faccio il dump dell'oggetto User mi viene restituito questo:
 
:
object(JUser)#44 (26) { ["isRoot":protected]=> NULL ["id"]=> int(0) ["name"]=> NULL ["username"]=> NULL ["email"]=> NULL ["password"]=> NULL ["password_clear"]=> string(0) "" ["block"]=> NULL ["sendEmail"]=> int(0) ["registerDate"]=> NULL ["lastvisitDate"]=> NULL ["activation"]=> NULL ["params"]=> NULL ["groups"]=> array(0) { } ["guest"]=> int(1) ["lastResetTime"]=> NULL ["resetCount"]=> NULL ["requireReset"]=> NULL ["_params":protected]=> object(Joomla\Registry\Registry)#45 (2) { ["data":protected]=> object(stdClass)#46 (0) { } ["separator"]=> string(1) "." } ["_authGroups":protected]=> NULL ["_authLevels":protected]=> NULL ["_authActions":protected]=> NULL ["_errorMsg":protected]=> NULL ["userHelper":protected]=> object(JUserWrapperHelper)#47 (0) { } ["_errors":protected]=> array(0) { } ["aid"]=> int(0) } come se la funzione non riuscisse a leggere l'ID dell'utente loggato.
Nota che, se l'utente non è loggato, non può vedere il link alla pagina php che recupera i suoi dati, quindi, se attiva il link, vuol dire che è loggato.