Repository 32bit  Forum
Repository 64bit  Wiki

[php] condividere variabili

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

[php] condividere variabili

Messaggioda sya54M » mer dic 16, 2009 0:07

salve, vorrei condividere delle variabili tra diverse pagine php, ho provato in questo modo:
pagina 1
Codice: Seleziona tutto
session_start();
echo "$_SESSION[variabile]";

pagina 2
Codice: Seleziona tutto
session_start();
$_SESSION["variabile"] = pippo;

ma ottengo un comportamento strano, ovvero di "pagine 2" ce ne sono più di una, in cui il contenuto della variabile è diversa in ognuna e al caricamento della prima pagina essa include la variabile caricata dalla pagina precedente e non da quella attuale... non so se sono stato chiaro ma potete chiedere chiarimenti e cerco di spiegare meglio la situazione.
grazie in aticipo
Avatar utente
sya54M
Linux 3.x
Linux 3.x
 
Messaggi: 1441
Iscritto il: mer giu 06, 2007 13:44
Località: (Salerno)
Nome Cognome: Andrea P.
Slackware: 64-current
Kernel: 3.17.x
Desktop: KDE 4.14

Re: [php] condividere variabili

Messaggioda aschenaz » mer dic 16, 2009 8:04

Ma, non ho capito: se tu setti valori diversi per $_SESSION["variabile"], è ovvio
che da quel momento in poi il valore sia l'ultimo assegnato.
Una varaibile di sessione dovrebbe essere, per sua natura, uguale per tutta la
sessione (o finché non la distruggi di proposito). Altrimenti, usa variabili diverse
per scopi diversi...

Ma forse se fai un esempio pratico di quello che ti serve...
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4438
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.24
Desktop: KDE 4.10.5

Re: [php] condividere variabili

Messaggioda sya54M » mer dic 16, 2009 10:26

pagina 1:
Codice: Seleziona tutto
<html>
<codice html>
<?php
echo "variabile settata in pagina 2";
?>
<codice html>
<?php include("pagina2.php"); ?>
<codice html>
</html>

questo è quello che voglio fare.
hai ragione in quello che dici, infatti si vede dal risultato, quindi come lo posso fare?
Avatar utente
sya54M
Linux 3.x
Linux 3.x
 
Messaggi: 1441
Iscritto il: mer giu 06, 2007 13:44
Località: (Salerno)
Nome Cognome: Andrea P.
Slackware: 64-current
Kernel: 3.17.x
Desktop: KDE 4.14

Re: [php] condividere variabili

Messaggioda aschenaz » mer dic 16, 2009 11:10

In genere le variabili di sessione non si settano in pagine incluse (e,
comunque, non è necessario includerle). In ogni caso, l'echo in testa
alla pagina di sicuro non ti restituirà mai un valore impostato dopo...
Ma, praticamente, cosa vuoi fare?
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4438
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.24
Desktop: KDE 4.10.5

Re: [php] condividere variabili

Messaggioda sya54M » mer dic 16, 2009 11:18

la pagina 2 la includo perchè mi serve includerla in quanto contiene dell'html da mostrare, non per le variabili.
in pratica ho fatto una index che contiene tutte le parti comuni del sito (la pagina 1 dell'esempio) nella quale si includono le pagine col contenuto (le pagine 2) passando un valore nell'url...
la questione delle variabili è dovuta al fatto che nelle pagine col contenuto ho dichiarato 2 variabili, titolo della pagina e descrizione della pagina, che devono essere stampati prima dell'inclusione come si vedeva nell'esempio, nella index.
Avatar utente
sya54M
Linux 3.x
Linux 3.x
 
Messaggi: 1441
Iscritto il: mer giu 06, 2007 13:44
Località: (Salerno)
Nome Cognome: Andrea P.
Slackware: 64-current
Kernel: 3.17.x
Desktop: KDE 4.14

Re: [php] condividere variabili

Messaggioda aschenaz » mer dic 16, 2009 11:57

Per sommi capi, potresti impostare le variabili in testa alla index in base a delle
condizioni, ad esempio:
Codice: Seleziona tutto
isset($_REQUEST["paginainclusa"]) ? $_SESSION["nonso"]="qualcosa" : $_SESSION["nonso"]="qualcosaltro";

Altrimenti, non vedo come tu possa visualizzare dei valori di variabile impostate
solo successivamente...

Ma, comunque, questa è solo una soluzione...

Naturalmente, puoi anche passare variabili e relativi valori nella querystring
della pagina:
Codice: Seleziona tutto
<a href="index.php?pagina=nomepagina&amp;nomevariabile=valorevariabile">
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4438
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.24
Desktop: KDE 4.10.5

Re: [php] condividere variabili

Messaggioda sya54M » mer dic 16, 2009 19:12

nella prima soluzione devo ricordare che il nome della pagina inclusa cambia sempre e quindi non la posso dare fissa all'inizio della index.
alla seconsa soluzione ci avevo già pensato ma non mi piaceva perchè contenendo anche la descrizione delle pagine, avrei url veramente lunghissimi.
Avatar utente
sya54M
Linux 3.x
Linux 3.x
 
Messaggi: 1441
Iscritto il: mer giu 06, 2007 13:44
Località: (Salerno)
Nome Cognome: Andrea P.
Slackware: 64-current
Kernel: 3.17.x
Desktop: KDE 4.14

Re: [php] condividere variabili

Messaggioda aschenaz » mer dic 16, 2009 19:42

sya54M ha scritto:nella prima soluzione devo ricordare che il nome della pagina inclusa cambia sempre e quindi non la posso dare fissa all'inizio della index.
alla seconsa soluzione ci avevo già pensato ma non mi piaceva perchè contenendo anche la descrizione delle pagine, avrei url veramente lunghissimi.

Io ancora sinceramente non ho ben compreso cosa vuoi fare... :-k

Per quanto riguarda il discorso delle descrizioni, puoi ricorrere ad un array
e passare alla querystring solo la chiave. Ad esempio così:
Codice: Seleziona tutto
$descrizione=array(
 "home"=>"descrizione pagina home",
 "pagina1"=>"descrizione pagina1",
etc...
)

Poi la visualizzi con
Codice: Seleziona tutto
$pagina=$_GET["pagina"];
$descrizionedavisualizzare=$descrizione["$pagina"];
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4438
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.24
Desktop: KDE 4.10.5

Re: [php] condividere variabili

Messaggioda sya54M » mer dic 16, 2009 20:09

quindi tu dici di dichiararle tutte dentro la index....
allora non c'è un modo di fare come dicevo io?
Avatar utente
sya54M
Linux 3.x
Linux 3.x
 
Messaggi: 1441
Iscritto il: mer giu 06, 2007 13:44
Località: (Salerno)
Nome Cognome: Andrea P.
Slackware: 64-current
Kernel: 3.17.x
Desktop: KDE 4.14

Re: [php] condividere variabili

Messaggioda aschenaz » mer dic 16, 2009 21:09

Il problema consiste nel fatto che tu vuoi visualizzare delle variabili che
ancora non sono state assegnate. Non puoi fare:
Codice: Seleziona tutto
echo $_SESSION["variabile"];
include("$pagina") // dove viene assegnato $_SESSION["variabile"]="valore";

In questo modo, alla prima istanza della sessione non visualizzerà nulla,
alle successive, visualizzerà sempre la precedente assegnazione.
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4438
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.24
Desktop: KDE 4.10.5

Re: [php] condividere variabili

Messaggioda sya54M » mer dic 16, 2009 21:25

si lo so :(
ma non c'è un modo di ovviare a questo facendolo in un altro modo ma sempre lasciando l'assegnazione nelle pagine coi contenuti?
Avatar utente
sya54M
Linux 3.x
Linux 3.x
 
Messaggi: 1441
Iscritto il: mer giu 06, 2007 13:44
Località: (Salerno)
Nome Cognome: Andrea P.
Slackware: 64-current
Kernel: 3.17.x
Desktop: KDE 4.14

Re: [php] condividere variabili

Messaggioda aschenaz » gio dic 17, 2009 8:18

L'unica soluzione che mi viene in mente potrebbe essere questa:
  • Nelle pagine da includere, inserisci in forma di variabile non solo quello che vuoi
    visualizzare (titolo pagina e descrizione, per esempio), ma anche i contenuti
    (magari aiutandoti con l'heredoc);
  • Nella index, includi le pagine prima della visualizzazione delle variabili.

In questo modo, non hai nemmeno bisogno di scomodare le sessioni.
Faccio un esempio pratico.
Pagina inclusa:
Codice: Seleziona tutto
<?php
$titolo="titolo della pagina";
$descrizione="descrizione della pagina";
$contenuto=<<<EOC

 <div>
   <p class="boh">hjhj jhjhjhj j</p>
   <p>etc. etc.</p>
 </div>

EOC;
?>

Index:
Codice: Seleziona tutto
<?php
isset($_GET["pagina"]) ? $pagina=$_GET["pagina"] : $pagina="home"; // io di solito faccio così...
include("$pagina");
?>
<html>
<head>
 <title><?php echo $titolo ?></title>
 <meta name="description" content="<?php echo $descrizione ?>" />
</head>
<body>
<?php echo $contenuto ?>
</body>
</html>

Non so se faccia al caso tuo...
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4438
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.24
Desktop: KDE 4.10.5

Re: [php] condividere variabili

Messaggioda sya54M » gio dic 17, 2009 15:47

grande :thumbright:
ho appena letto la tua risposta, quindi lo devo ancora applicare, ma ho capito come funziona e va benissimo
grazie infinite! stasera lo faccio e casomai ho problemi faccio sapere
Avatar utente
sya54M
Linux 3.x
Linux 3.x
 
Messaggi: 1441
Iscritto il: mer giu 06, 2007 13:44
Località: (Salerno)
Nome Cognome: Andrea P.
Slackware: 64-current
Kernel: 3.17.x
Desktop: KDE 4.14

Re: [php] condividere variabili

Messaggioda sya54M » gio dic 17, 2009 21:32

ho un problema con questa soluzione... le pagine coi contenuti contengono altro codice php (alcune anche molto) e facendo così lo vede come testo da scrivere nell'html :(
Avatar utente
sya54M
Linux 3.x
Linux 3.x
 
Messaggi: 1441
Iscritto il: mer giu 06, 2007 13:44
Località: (Salerno)
Nome Cognome: Andrea P.
Slackware: 64-current
Kernel: 3.17.x
Desktop: KDE 4.14

Re: [php] condividere variabili

Messaggioda aschenaz » gio dic 17, 2009 22:07

sya54M ha scritto:ho un problema con questa soluzione... le pagine coi contenuti contengono altro codice php (alcune anche molto) e facendo così lo vede come testo da scrivere nell'html :(

Vabbe', ma il codice php non lo devi certo includere nell'heredoc!
Tu imposta le variabili in base a quello che vuoi visualizzare, mentre le
eventuali funzioni php rimangono per i fatti loro...
Codice: Seleziona tutto
<?php
$variabile="assegnazione";
$variabile2="altra assegnazione";
$variabile3=<<<EOV
 testo vario da visualizzare che può contenere variabili ma non codice attivo
EOV;
// codice vario php
funzione() {
 // contenuto della funzione
}
?>
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4438
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.24
Desktop: KDE 4.10.5

Prossimo

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron