Back to top

Autore Topic: Ricavare dati dell'utente da pagine esterne a Joomla  (Letto 4542 volte)

Offline giancarlo75

  • Esploratore
  • **
  • Post: 160
    • Mostra profilo
Spero proprio che qualcuno mi dia una dritta perchè è una cosa che devo fare assolutamente e non ho la più pallida idea di come agire.
In pratica devo creare nuove tabelle nel db per fare un'applicazione simile ad un elenco telefonico che nel mio caso è l'elenco degli iscritti ad un ordine professionale.
Ho pensato, per facilitarmi il tutto, di creare tutto il sistema in pagine esterne a Joomla e poi di inserire il tutto in un iframe dentro un articolo, in modo tale che gli utenti navighino tra l'elenco senza abbandonare la pagina principale.
Per fare tutto questo non credo che avrò particolari problemi, il problema si pone quando dall'esterno devo riconoscere gli utenti loggati e i loro gruppi di appartenenza, perchè ho provato ad includere la classe JFactory ed a fare i controlli, ma la pagina non viene più caricata. Vorrei evitare di dover fare un login separato per l'applicazione.

P.S. ho trovato a questa pagina:
http://www.geek-blog.it/index.php?ctg=7&id=331
posto esattamente il problema che voglio risolvere io. Il fatto è che traccia due possibili soluzioni e spiega, in modo piuttosto approssimato, la seconda mentre io avrei bisogno di adottare la prima
« Ultima modifica: 24 Lug 2011, 12:29:19 da giancarlo75 »
Clastiweb

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Re:Ricavare dati dell'utente da pagine esterne a Joomla
« Risposta #1 il: 24 Lug 2011, 12:27:40 »

Offline giancarlo75

  • Esploratore
  • **
  • Post: 160
    • Mostra profilo
Re:Ricavare dati dell'utente da pagine esterne a Joomla
« Risposta #2 il: 24 Lug 2011, 13:25:04 »
Ti ringrazio, ho dato un'occhiata alla descrizione e alla demo del componente ma non ho capito come usarlo per raggiungere il mio scopo, oltre al fatto che non so se con 1.6 è compatibile.
Mi ero scordato di aggiungere che vorrei evitare di usare componenti aggiuntivi se non strettamente necessari, per avere un maggior controllo su quello che vado a fare.
Per richiamare i dati di sessione da una pagina esterna presumo che bastino poche righe di codice, il problema è sapere cosa metterci in quelle poche righe.
In realtà interrogare interrogare il database di Joomla per sapere i dati di sessione mi sarebbe possibile, il fatto è che bisogna individuare il record giusto che corrisponde a quel determinato utente. Siccome vedo che la tabella jos_session contiene un campo session_id, presumo che quando un utente esegue il login automaticamente viene registrato un cookie in locale che tenga traccia del riferimento a quell'utente. Soluzioni diverse non vedo quali possano essere, ci deve per forza essere un dato in locale che faccia riferimento a quella particolare sessione di login. In conclusione quindi sarebbe sufficiente individuare quel dato, se presente, per risalire alla sessione.
« Ultima modifica: 24 Lug 2011, 13:38:27 da giancarlo75 »
Clastiweb

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Re:Ricavare dati dell'utente da pagine esterne a Joomla
« Risposta #3 il: 24 Lug 2011, 13:38:20 »
Richiamare pagine esterne è sempre sconsigliabile perchè poi perdi l'interazione e sopratutto perdi il controllo proprio perchè esterni a joomla. Non è chiaro l'uso che poi ne devi fare di questo elenco, magari se aggiungi ulteriori informazioni troviamo la strada giusta.

Offline giancarlo75

  • Esploratore
  • **
  • Post: 160
    • Mostra profilo
Re:Ricavare dati dell'utente da pagine esterne a Joomla
« Risposta #4 il: 24 Lug 2011, 13:52:17 »
L'elenco dovrebbe esattamente essere questo:
http://www.ordinearchitettipavia.it/wp-content/uploads/2010/11/associati2011.pdf
come si vede è già pubblico e resterà tale.
Per il momento lo scopo è quello di inserire i dati all'interno del sito invece di avere solo un pdf. (La mia speranza è di poter eseguire una migrazione su mysql senza dovermi riscrivere tutto)
In futuro potrebbe esserci una funzione di ricerca e un collegamento, per ogni iscritto, ad una pagina personale dove poter mettere il proprio curriculum ed i settori di competenza.
Comunque per il momento volevo solo aggiungere la possibilià da parte di utenti appartenenti ad alcuni specifici gruppi di Joomla di poter modificare i records dell'elenco, in modo che il cliente non debba agire attraverso phpmyadmin ma possa fare il tutto dal frontend del sito. Per questo mi serve individuare i dati dell'utente loggato.

P.S. Ho modificato il testo del mio precedente messaggio prima di vedere il tuo nuovo post, potresti dare un'occhiata al mio ragionamento per vedere se secondo te è corretto?
Clastiweb

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Re:Ricavare dati dell'utente da pagine esterne a Joomla
« Risposta #5 il: 24 Lug 2011, 13:59:40 »
Ti serve necessariamente un componente directory prova sobipro o sobi2, installali e fai tutti i test del caso, in ultimo nella stessa sezione della JED ci sono anche componenti commerciali, che per regolamento non posso citare e naturalmente poi discutere nel forum, valuta anche se del caso.

Offline giancarlo75

  • Esploratore
  • **
  • Post: 160
    • Mostra profilo
Re:Ricavare dati dell'utente da pagine esterne a Joomla
« Risposta #6 il: 24 Lug 2011, 16:05:17 »
Alla fine ce l'ho fatta. Non è una soluzione ottimale al 100% perchè se per utopia ci fossero un milione di utenti loggati al sito la pagina rallenterebbe molto, dato che bisogna scorrere tutti i records degli utenti loggati. Neppure in termini di sicurezza non è ottimale, me ne rendo conto, perchè poi bisogna stare bene attenti a quello che si fa fare agli utenti una volta che si sono riconosciuti.
Comunque la soluzione che ho trovato è la seguente.
Ho notato che Joomla crea dei cookie durante il login, uno che vale per il login al backend ed uno per quello al frontend, che è quello che mi interessa. Vengono create anche dei dati di sessione ma non sono accessibili dall'esterno, mentre i cookie sì.
Il problema è che la chiave del cookie che contiene l'id di sessione è criptata, ed anche se ho notato che con due browser differenti il codice alfanumerico è lo stesso, credo che cambi da un computer all'altro altrimenti non servirebbe criptarla. Quindi il cookie che contiene l'id non si può richiamare direttamente perchè non si conosce il suo nome. Però $_COOKIE è un array che contiene tutti i cookie registrati, quindi è sufficiente scorrere i records della tabella jos_session e verificare che il valore nel campo session_id sia all'interno dell'array $_COOKIE e l'utente non può essere che quello.
Il codice è questo:
Codice: [Seleziona]
require_once '../../configuration.php';
$conf = new JConfig;
$conn = mysql_connect($conf->host, $conf->user, $conf->password) or die('Could not connect to the database; ' . mysql_error());
mysql_select_db($conf->db, $conn) or die('Could not select database; ' . mysql_error());
$sql = "SELECT * FROM jos_session WHERE guest=0";
$result = mysql_query($sql, $conn) or die('Could not look up user information; ' . mysql_error());
while ($row = mysql_fetch_row($result)) {
    if(in_array($row[0],$_COOKIE) && !$row[1]) {
        $session_id=$row[0];
        $user_id=$row[5];
        $username=$row[6];
    }
}
echo $session_id."[br /]";
echo $user_id."[br /]";
echo $username."[br /]";
L'ho verificato e funziona, riconosce anche quando mi disconnetto.
« Ultima modifica: 24 Lug 2011, 16:08:22 da giancarlo75 »
Clastiweb

mau_develop

  • Visitatore

Offline giancarlo75

  • Esploratore
  • **
  • Post: 160
    • Mostra profilo
Re:Ricavare dati dell'utente da pagine esterne a Joomla
« Risposta #8 il: 24 Lug 2011, 17:16:45 »
Non sono molto pratico con le classi, avevo provato a usarlo ma non c'ero riuscito. Comunque ho il dubbio che queste classi funzionino solo dall'interno di joomla. Ad ogni modo ho testato il mio codice e funziona anche quando ci sono più utenti loggati.
Clastiweb

 



Web Design Bolzano Kreatif