Variabili di sessione

16 contenuti / 0 new
Ultimo contenuto
Variabili di sessione

Buongiorno a tutti,
sono nuovo di Drupal e subito mi sto perdendo in un bicchier d'acqua :-D
Per cominciare vorrei riusare al suo interno alcune applicazioni di prenotazione già sviluppate.

Queste prevedono l'utilizzo di dati di sessione che ad un certo punto vengono scritte/lette su un db oracle attraverso dei meccanismi soap.

Le prime 2 criticità in cui sono andato ad imbattermi sono queste:
1 - Come fare a istanziare variabili di sessione del tipo $_SESSION come normalmente farei in un ambiente PHP 'semplice'?
2 - Come interagire con le variabili gestite da Drupal tipo nome dell'utente?

Ho provato a cercare in rete ma devo dire che dopo aver letto svariati articoli, tutorial, post ... ho le idee più confuse di prima...

Grazie in anticipo

per accedere ad informazioni utente:

<?php
global $user;
nome = $user->name;
uid  = $user->uid;
// ...
?>

Ciao
Marco
--
My blog
Working at @agavee

Non se se usi la versione 5 o 6 comunque dovrebbe essere lo stesso ..
Le sessioni sono attivate da Drupal in fase di bootstrap , cioè all'inizio quando è letto il file index.php.

Al riguardo vai a vedere nel file includes/bootstrap.inc le funzioni:
drupal_bootstrap($phase) che pilota tutto il bootstrap
e _drupal_bootstrap($phase) occhio al trattino iniziale,che pilota la singola fase, tra cui la gestione sessioni.

Poi vai a vedere il file includes/session.inc dove troverai le funzioni di gestione delle sessioni.

Infine il file page.tpl.php è il file che viene chiamato per ultimo per visualizzare la pagina.
E' legato al tema che stai usando, ma quando viene chiamato quel file hai disponibile l'oggetto $user, i contenuti ($content) e praticamente tutto il resto e quindi li puoi fare quel che ti serve fare .....
Ciao

________________________________________________________________________________________
Quando risolverai il problema, scrivi come hai fatto, e se puoi scrivi [RISOLTO]
Sarà utile ad altri. Grazie
enzoazzolini.it

tursost wrote:

1 - Come fare a istanziare variabili di sessione del tipo $_SESSION come normalmente farei in un ambiente PHP 'semplice'?

Assegni semplicemente il valore alla variabile di sessione, ne più ne meno come fai sempre (io lo uso per portarmi dietro il dato inserito nei form di ricerca)

Non so come tu vuoi portarti dietro quel codice, ma IMO, la cosa migliore è crearsi un modulo da zero.

Purtroppo sei stato fin troppo vago e non hai specificato se il codice che vuoi utilizzare sono semplici funzioni/pezzi di codice, classi o cosa.

Ciao
Gianni

Ringrazio tutti per le preziose risposte che mi hanno portato sulla giusta strada,
ho da scrivere ancora molto codice ma comincio ad apprezzare il frame di Druplal....

ciao,

Andrea

giannigiusti wrote:

Assegni semplicemente il valore alla variabile di sessione, ne più ne meno come fai sempre (io lo uso per portarmi dietro il dato inserito nei form di ricerca)

Dopo diversi moduli, sono approdato anche io a questa soluzione per i form di ricerca, quantomeno perchè consente di non perdere i dati in caso di "indietro" impartito via browser... Non c'è una soluzione più "pulita"?

enzodrup wrote:
hai disponibile l'oggetto $user, i contenuti ($content) e praticamente tutto il resto

Scusate, forse sono OT, ma dove posso trovare l'elenco completo delle variabili che si porta dietro $user e $content?

Grazie

Si secondo me sei OT, comunque print_r($user) e print_r($content) !

o meglio ancora:

  1. Installare il modulo devel
  2. Usare
    dpm($variabl);

Ciao
Marco
--
My blog
Working at @agavee

follettoinventore wrote:
Si secondo me sei OT, comunque print_r($user) e print_r($content) !

Questo sì, ma mi sarebbe piaciuto avere delle specifiche un po' più precise sul tipo di dati che posso incontrare.

<?php
// prova
var_dump( $variable );
// o
get_defined_vars();
// oppure
 
ob_start();
     
var_dump( $var );
 
$str = ob_get_clean();
echo
$str;
?>

ciao

Salve a tutti,
anche io sono alle prime esperienze con drupal ed ho problemi relativi alle variabili di sessione.
Sono ore che ci sbatto la testa ma non riesco ad uscirne fuori, vi sarei grato se riusciste a darmi una mano, provo a spiegarvi il mio problema:

dovrei accedere da un link in page.tpl ad una pagina (un brevissimo script php) che, se cliccato, mi setti una mia variabile di configurazione che mi servirà in tutte le pagine del sito per mostrare o no delle cose...
Lo scritp altro non deve fare che:

<?php
session_start
();
$_SESSION['USAGE']='base';
header("Location:".$_REQUEST['page']);  // torna alla pagina da cui sei stato chiamato
?>

Quindi la pagina ad occhio umano non si vedrà neanche (perciò non ho utilizzato page.tpl)

Ma se faccio in questo modo al ritorno alla pagina non mi vede assolutamente niente (mentre se all'interno di page.tpl mi creo delle variabili di sessione me le "ricorda" benissimo); quindi direi che il problema è solo nelle pagine "esterne" a drupal.

Seguendo i consigli di Enzodrup mi sono guardato i file *.inc e ho provato a capirci qualcosa :D
ora il mio codice della pagina esterna è il seguente:

<?php
session_start
();
require_once
'../../includes/bootstrap.inc';
include
"../../includes/session.inc";
include
"../../includes/database.mysql.inc";
include
"../../includes/database.inc";
sess_read($_REQUEST['id_s']);  //id vero e proprio della sessione
$_SESSION['USAGE']='base';
print_r($_SESSION);
    if(isset(
$_SESSION['USAGE']) && $_SESSION['USAGE']=='base'){
    
//header("Location:".$_REQUEST['page']);
    
echo "<a href='".$_REQUEST['page']."'>torna</a>";
    }
?>

ma purtroppo il problema non cambia... qualcuno sa aiutarmi?
grazie per l'attenzione!

P.S.
Il problema sembra che non mi restituisca nulla la funzione:

<?php
 
return  _db_query($query);  //database.inc riga 200
?>

perchè la variabile globale $active_db non va bene...
help me please!

Ciao, apri un thread nuovo per il tuo problema, perchè così è poco visibile.

Comunque, senza andare a spulciarti troppi file, prova ad iniziare il tuo script con queste due righe:

<?php
include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
?>

Sono quelle del file cron.php.

M.

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal

ziobudda wrote:
Ciao, apri un thread nuovo per il tuo problema, perchè così è poco visibile.

Apri si un nuovo tread, ma secondo me matteo sei un po fuori strada...

Ok,
ho aperto in un nuovo tread, grazie per il consiglio sia a te che ziobudda.

Però ti rilancio una domanda... fuori strada? cosa intendi?
Grazie ciao

Intendo che il file page.tpl.php va utilizzato solo per definire quello che è il template grafico del sito, sarebbe meglio inserire meno codice php possibile dentro a tale file.

Tutto qui, ciao