Back to top

Autore Topic: Sessioni in Joomla  (Letto 1922 volte)

Offline Alhazred

  • Appassionato
  • ***
  • Post: 289
    • Mostra profilo
Sessioni in Joomla
« il: 19 Mar 2009, 12:33:16 »
Sto scrivendo un'applicazione in PHP da aggiungere poi ad un sito in J1.5 come un sito esterno da racchiudere in un link wrapper.
Mi sta venendo un dubbio: il link a questa applicazione sarà accessibile solo a chi avrà effettuato il login, nelle pagine che scrivo ho bisogno di utilizzare la sessione, devo preoccuparmi di gestire i casi in cui i cookie sono disabilitati o ci ha già pensato joomla e posso non pensarci partendo direttamente da start_session() ed essere sicuro che verrà trovata la sessione con ID valido?

Offline Alhazred

  • Appassionato
  • ***
  • Post: 289
    • Mostra profilo
Re: Sessioni in Joomla
« Risposta #1 il: 19 Mar 2009, 13:23:37 »
Mi sa che non si può fare così, da quanto ho capito, Joomla gestisce le sessioni a modo suo mettendo a disposizione metodi che non hanno nulla a che vedere con la gestione classica in PHP, quindi non utilizzabili da pagine esterne.

Offline Alhazred

  • Appassionato
  • ***
  • Post: 289
    • Mostra profilo
Re: Sessioni in Joomla
« Risposta #2 il: 19 Mar 2009, 13:52:33 »
Sono riuscito ad usare la sessione creata da joomla, ma solo in un file posizionato nella root del sito facendo in questo modo:
Codice: [Seleziona]
<?php
define
'_JEXEC');
define('JPATH_BASE'dirname(__FILE__) );
define'DS'DIRECTORY_SEPARATOR );
require_once ( 
JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( 
JPATH_BASE .DS.'includes'.DS.'framework.php' );
//JDEBUG ? $_PROFILER->mark( 'afterLoad' ) : null;
$mainframe =& JFactory::getApplication('site');
$session =& JFactory::getSession();

$session->set('prova''qualcosa''variabile_prova'); //imposta la variabile di sessione variabile_prova.prova

print $session->get('prova'0'variabile_prova'); //stampa il contenuto della variabile in sessione

...

Non ci riesco se il file php si trova in una sottocartella, all'inizio mi diceva che non trovava la cartella includes, ho cambiato il JPATH_BASE nella mia pagina e riesco ora a puntare alla cartella giusta, ma ottengo questo messaggio:

No configuration file found and no installation code available. Exiting...

Come posso risolvere questa cosa?
« Ultima modifica: 19 Mar 2009, 13:54:13 da Alhazred »

Offline Alhazred

  • Appassionato
  • ***
  • Post: 289
    • Mostra profilo
Re: Sessioni in Joomla
« Risposta #3 il: 19 Mar 2009, 16:33:24 »
Sto provando a creare una nuova sessione quando si arriva sulla pagina iniziale della mia applicazione, ma non mi riesce.

Come prima istruzione della pagina da me creata ho il session_strart() ma ritorna false e la sessione non viene creata.
E' dovuto al fatto che si trova dentro il wrapper di Joomla?

Posso provare in qualche altro modo?

Offline Alhazred

  • Appassionato
  • ***
  • Post: 289
    • Mostra profilo
Re: Sessioni in Joomla
« Risposta #4 il: 19 Mar 2009, 20:48:48 »
Ho provato a linkare dal menu questo script

first.php
Codice: [Seleziona]
<?php
session_start
();
$_SESSION['test'] = "testo di prova";
?>

<a href="prestazioni/second.php">link</a>
Appare la pagina con il link che punta a second.php che è fatta in questo modo
Codice: [Seleziona]
<?php
   session_start
();
   
$var $_SESSION['test'];
   print 
$var;
?>

cliccando sul link arrivo a second.php che mi stampa correttamente a video il contenuto di $_SESSION[test'] ovvero
testo di prova

Ora la pagina iniziale è tornata più o meno quella postata in precedenza, così:

prestazioni.php
Codice: [Seleziona]
<?php
session_start
();
$_SESSION['test'] = "testo di prova"

define'_JEXEC');
define('JPATH_BASE'dirname(__FILE__) );
define'DS'DIRECTORY_SEPARATOR );
require_once ( 
JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( 
JPATH_BASE .DS.'includes'.DS.'framework.php' );

$mainframe =& JFactory::getApplication('site');
$user =& JFactory::getUser();

header("location: /prestazioni/second.php"); //redirect su second.php
?>

second.php è invariata, stavolta però non stampa il contenuto della variabile.
Credo ci sia qualcosa nel codice di prestazioni.php che da fastidio alla variabile in sessione... ma cosa?
Sto diventando pazzo.

Offline Alhazred

  • Appassionato
  • ***
  • Post: 289
    • Mostra profilo
Re: Sessioni in Joomla
« Risposta #5 il: 19 Mar 2009, 21:40:23 »
Il cerchio si stringe, ho provato con po' di combinazioni a commentare queste righe:
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$user =& JFactory::getUser();

Il risultato è che la variabile arriva a second.php se i 2 require_once sono disattivati.
Cosa fanno di male a quella povera variabile in sessione? Come posso aggirare il problema?

 



Web Design Bolzano Kreatif