Back to top

Autore Topic: Richiamare variabile $user =& JFactory::getUser(); in una pagina php  (Letto 8413 volte)

Offline FreuxBang

  • Appassionato
  • ***
  • Post: 230
    • Mostra profilo
Salve, come posso richiamare la variabile "$user=& JFactory::getUser()" in una normalissima pagina php ? Ovviamente se scrivo questa variabile in una pagina interna di joomla, che sia un articolo o un modulo, funziona tutto bene, ma se provassi a scriverla su una pagina php , cosa dovrei scrivere?.Grazie

« Ultima modifica: 18 Feb 2013, 12:10:20 da FreuxBang »


Offline FreuxBang

  • Appassionato
  • ***
  • Post: 230
    • Mostra profilo

Ad esempio: voglio stampare il proprio id.

$user = &JFactory::getUser();
$user_id = $user->get('id');
echo $user_id ;


Questo codice funziona all'interno delle pagine di joomla ma non funziona se lo applico su una nuda pagina php. Cosa devo introdurre nel codice, per poter applicare la funzione jFactory anche sulla pagina PHP?




Offline skyline81

  • Appassionato
  • ***
  • Post: 310
    • Mostra profilo
cosa intendi per  "normalissima pagina php"?

tutti siamo utili e nessuno indispensabile... tranne il defined( '_JEXEC') or die

Offline FreuxBang

  • Appassionato
  • ***
  • Post: 230
    • Mostra profilo

Nel mio sito in joomla tengo all'interno una cartella che contiene a sua volta una pagina in php
In questa pagina ho bisogno di far visualizzare l'id del proprio account.

www.miosito.it/nuovacartella/pagina.php

Offline skyline81

  • Appassionato
  • ***
  • Post: 310
    • Mostra profilo
mi hai reso curioso e così ho provato!  ;D

andando per una deduzione logica ho copiato dall'index.php (il primo file richiamato da J!) la parte della definizione delle variabili e l'inclusione del framework.

successivamente ho aggiunto il pezzo di codice che a te serve (ricavare l'id dell'account)

questo è il mio file

test.php
Codice: [Seleziona]
<?php
/**
 *    Test per inclusione Framework Joomla! in script esterni
 *    Risposta al topic su forum.joomla.it
 *
 *    http://forum.joomla.it/index.php/topic,186020.0.html
 *
 *    @author        Dario Skyline81 Formicola
 *    @date        2013-02-18
 *    @version    0.1
 *
 */
 
// Set flag that this is a parent file.
define('_JEXEC'1);
define('DS'DIRECTORY_SEPARATOR);

if (
file_exists(dirname(__FILE__) . '/defines.php')) {
    include_once 
dirname(__FILE__) . '/defines.php';
}

if (!
defined('_JDEFINES')) {
    
define('JPATH_BASE'dirname(__FILE__));
    require_once 
JPATH_BASE.'/includes/defines.php';
}

require_once 
JPATH_BASE.'/includes/framework.php';

$user = &JFactory::getUser();

echo 
$user->id;

?>


l'ho testato e sembra funzionare... ovviamente è solo una base  ;)

EDIT
____

il file test.php l'ho inserito nella directory root... se tu lo inserisci in un altro percorso occhio ai path per le inclusioni
tutti siamo utili e nessuno indispensabile... tranne il defined( '_JEXEC') or die

Offline FreuxBang

  • Appassionato
  • ***
  • Post: 230
    • Mostra profilo
Grazie, avevo anch'io provato a fare cosi, ma la pagina mi andava in errore, quindi si vede che i riferimenti sono sbagliati.

Devo capire come devo modificare il codice dato che il file in php si trova qui:

www.miosito.it/cartella1/cartella2/index.php


« Ultima modifica: 18 Feb 2013, 23:39:13 da FreuxBang »

Offline FreuxBang

  • Appassionato
  • ***
  • Post: 230
    • Mostra profilo
Ho risolto modificando la riga
da cosi:
define('JPATH_BASE', dirname(__FILE__));
a cosi:
define('JPATH_BASE', '../../');


Grazie

Offline FreuxBang

  • Appassionato
  • ***
  • Post: 230
    • Mostra profilo
Come valore mi da sempre 0.
Anche quando mi loggo

come mai?








Offline FreuxBang

  • Appassionato
  • ***
  • Post: 230
    • Mostra profilo
Ci sono riuscito, per farlo funzionare ho dovuto scrivere il codice in questa maniera:


Codice: [Seleziona]
define( '_JEXEC', 1 );
define( 'DS', DIRECTORY_SEPARATOR );
define('JPATH_BASE', '../../' );




require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );


$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();


$session =& JFactory::getSession();
$user = $session->get( 'user' );


echo $user->id;

[size=78%]Mentre quello che mi avevi consigliato, mi faceva spuntare soltanto uno 0, anche quando l'utente è loggato.[/size]

[size=78%]Grazie[/size]

 



Web Design Bolzano Kreatif