Persistenza di Variabili tra pagine

Salve io ho problema non riesco a passare delle variabili da una pagina all'altra, dalla prima pagina

faccio un require di questi due files: require ('errormessagerepository.php'); require ('stylecss.php');

Volevo sapere se è corretto come sto passando le variabili all'altra pagina: 

   #Setto i Cookie per la var connectToHost ,dbname e MySqlError()
  setcookie ("ConnectToHost","$connectToHost",time()+30,"/");
  setcookie ("DBName","$dbname",time()+30,"/");
  $MySql_Error = mysql_error();
   setcookie ("MySqlError","$MySql_Error",time()+30,"/");

    $conndb=@mysql_connect($connectToHost,$dbuser,$dbpassword)
   or die ("<span class='red'>".$error['noconnect_host']."</span>");

   @mysql_select_db ($dbname,$conndb)
   or die ("<span class='red'>".$error['noselect_db']."</span>");

poi faccio nell'altra pagina queste operazione:

  #Variabili di appogio per i cookie
  $cookie_connectToHost = $HTTP_COOKIE_VARS["ConnectToHost"];
  $cookie_dbname = $HTTP_COOKIE_VARS["DBName"];
  $cookie_mysql_error = $HTTP_COOKIE_VARS["MySql_Error"];  
#Errore di connessione al DB MySQL
  $error['noconnect_host'] = "Non riesco a connettermi a <b>$cookie_connectToHost</b>,l'errore &eacute;:";
  $error['noconnect_host'] .= "<b>$cookie_mysql_error</b>";

::)

inviato 8 anni fa
EKELON77
X 0 X

1) $HTTP_COOKIE_VARS lo usava mio nonno  :) adesso si usa semplicemente $_COOKIE

2) per passare delle variabili da una pagina all'altra ci sono diverse tecniche:

http://www.phpnews.it/articoli/php/il-passaggio-delle-variabili-e-la-gestione-dello-stato/

i cookie vanno usati principalmente per memorizzare dei dati dell'utente e non dei dati dello script PHP per i quali è meglio usare altre tecniche, in particolare le sessioni.

3) perché mai vuoi memorizzare un errore di connessione in un cookie???

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

infatti io sono tuo nonno 77 sta per 1877  :P, a parte i scherzi ho provato con $_GET, ma nn $_POST; sei illuminante comunque mi serve segnalare all'utente una descrizione più carina e chiara...!!!  O0

P.S.: Spero di aver risposto correttamente alla tua domanda.

risposto 8 anni fa
EKELON77
X 0 X

Se il file che genera l'errore include il file che mostra il messaggio allora le variabili non si perdono e quindi non devi passarle via $_GET, $_POST e simili.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Ma provare a usare le sessioni ? non sarebbe forse un po piu facile ?

risposto 8 anni fa
costaplus
X 0 X

Se il file che genera l'errore include il file che mostra il messaggio allora le variabili non si perdono e quindi non devi passarle via $_GET, $_POST e simili.

 :bye:

Si Gianni è un Logon quindi gli vengono passate via $_POST, ma non per mysql_error(), come posso fare?

risposto 8 anni fa
EKELON77
X 0 X

Se il file che genera l'errore include il file che mostra il messaggio allora le variabili non si perdono e quindi non devi passarle via $_GET, $_POST e simili.

 :bye:

Si Gianni è un Logon quindi gli vengono passate via $_POST, ma non per mysql_error(), come posso fare?

Mi correggo ancora è vero i passo in una fase di logon dove tutto viene passato con il metodo $_POST, ma per quanto rigarda quelle variabili come: $connectToHost, $dbname e MySql_Error() non vengono valorizzate e facendo un echo esce vuoto.  :bye:

risposto 8 anni fa
EKELON77
X 0 X

il file che genera l'errore ed il file che mostra l'errore sono legati da un include o da un redirect?

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

da un require come da example:

require ('errormessagerepository.php');

questo è il conteniore degli errori applicativi, ho provato con i cookie e a volte me lo visualizza e altre no, devo fare parecchi refresh della pagina, mentre con le sessioni funziona tutto perfettamente, ma vorrei capire perchè nella pagina dove viene creata la variabile essa ha vita se la passo con $_POST è vuota o non esiste; ovviamente ho il register_globals = off sul php.ini? :bye:

risposto 8 anni fa
EKELON77
X 0 X

hai parecchia confuzione sulle variabili PHP... proviamo a chiarire i punti principali:

Quando un utente richiede uno script PHP, le normali variabili scritte nel codice sono visibili sia nello script chiamato, sia in tutti gli script inclusi con le istruzioni include e require. Però bisogna fare attenzione alle regole di visibilità: una variabile definita in una funzione non è visibile esternamente, metre una variabile scritta esternamente può essere vista in una funzione solo usando la dichiarazione global. Maggiori info qui:

http://www.phpnews.it/corsi/corso-php-base/funzioni-personalizzate-ii/

(paragrafo "Visibilità delle variabili")

Esistono poi delle variabili, o meglio degli array, che sono speciali e sono detti array superglobali. Sto parlando di $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_REQUEST, $_FILES, $GLOBALS e $_SESSION.

Questi array sono visibili OVUNQUE ma la loro particolarità non finisce qui. Questi array contengono infatti dati che non nascono nello script PHP (come le comuni variabili) ma vengono dall'esterno, ovvero dall'utente o dal server (fatta eccezione per $GLOBAL e $_SESSION).

Il loro scopo è quello di interagire con l'utente (fatta eccezione per $GLOBAL e $_SESSION)

Al termine dell'esecuzione di uno script (e di tutti i file inclusi da esso) tutte queste variabili vengono cancellate, ad eccezione di quelle contenute in $_SESSION. Quindi il vero problema della persistenza delle variabili non si ha tra il file richiamato dall'utente e quelli da esso inclusi, ma tra due richieste distinte dell'utente, quindi tra due pagine distinte visualizzate dall'utente.

In questo caso spesso si usa $_SESSION per conservare i dati, ma ci sono altre tecniche descritte qui:

http://www.phpnews.it/articoli/php/il-passaggio-delle-variabili-e-la-gestione-dello-stato/

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Si è vero quello ke dici ho un pò di confusione su di esse, comunque rifacendo il punto della situazione:

quindi mi stai dicendo che la varibile che creo ha una vita fino alla fine dell'esecuzione dello script esso non ha persistenza e visibilità su altre pagine almeno che non utilizzi le $_SESSION, spero di aver capito bene.

Concludendo se io definisco global le variabili $connectToHost, $dbname e ecc... queste dovrebbero avere vita anche su altri script, ma perchè con $_COOKIE solo a volte mi si visualizzavano il valore contenuto nella variabile; mi spiego meglio quando si esegue uno script in post se passo dei cookie perchè essi non vengono visualizzati e per visualizzarli devo fare parecchi refresh della pagina?  :bye: e grazie

risposto 8 anni fa
EKELON77
X 0 X

I dati inviati all'utente con setcookie non vengono inseriti in $_COOKIE

In $_COOKIE vengono inseriti i dati presenti nei cookie che l'utente possiede all'atto della richiesta di una pagina web.

Quindi se in uno script usi setcookie per la prima volta, allora $_COOKIE non conterrà i dati immessi. Alla successiva pagina richiesta $_COOKIE conterrà i dati precedentemente inviati con setcookie

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Ciao riapro questo topic perchè mi ritrovo che le  variabili non sono valorizzate tra un file e l'altro? :bye:

risposto 8 anni fa
EKELON77
X 0 X

forse questo ti darà na mano...

http://www.phpnews.it/forum/index.php?topic=3131.0

risposto 8 anni fa
larchitetto
X 0 X

Invece mi ha confuso di +  le idee  :crazy:, cmq. dovrei utilizzare le sessioni se ho capito bene? :bye:

risposto 8 anni fa
EKELON77
X 0 X

beh anche io ho riletto più d'una volta i vari post di quel topic... :D

cmq se vuoi che fra uno script e l'altro siano conservati determinati valori referenti un utente, devi usare le sessioni che, ricordo, sono lato server.

se invece devi conservare dei valori statici, ti basta creare uno script con tali variabili e relativi valori e includerlo ad ogni script per poter usare tali variabili; ogni modifica di queste sarà persa ad una nuova inclusione dello script, e in ogni caso le modifiche resteranno finchè lo script è in esecuzione.

inoltre puoi usare i cookie che son simili alle sessioni (variabili e valori persistono di script in script); tuttavia presta attenzione che son memorizzate lato client, sul browser in uso, indi attento alla sicurezza dei dati che andresti a conservare sul pc dell'utente.

GET e POST sono degli array super globali: ad ogni form o link cliccato, tali array saranno valorizzati con quei dati e persistono di script in script. mi son accorto che dopo un po' il server web provvederà a svuotarli; ma finchè "vivono", potrai usarli su qualsiasi script.

spero sia chiaro... XD altrimenti chiedi =D

risposto 8 anni fa
larchitetto
X 0 X

Sono messaggi di errore tramite die sono statici ma ripetitivi procedo con le session. :bye:

risposto 8 anni fa
EKELON77
X 0 X

non ho capito bene...

cmq se devi mandare dei messaggi di errore per i "die" e sono sempre quelli, uno script con le stringhe medesime va benone; se invece cambia qualche parametro, allora al "die" potresti passare una funzione (inclusa nel medesimo script incluso dovunque) che prende tali parametri e rende la stringa finale; oppure ancora otresti operare con una gestione delle eccezioni...

oppure boh non so cosa devi fare di preciso XD

risposto 8 anni fa
larchitetto
X 0 X

ke cosa non ti è chiaro, cmq. a me serve di salvare l'hostname e ecc...  :bye:

risposto 8 anni fa
EKELON77
X 0 X

beh per valorizzare il messaggio di un die non mi incasino la sessione...

risposto 8 anni fa
larchitetto
X 0 X
beh per valorizzare il messaggio di un die non mi incasino la sessione...
risposto 8 anni fa
EKELON77
X 0 X

...?

risposto 8 anni fa
larchitetto
X 0 X
...?

ke significa io ho problemi seri sulle sessioni  :'(

risposto 8 anni fa
EKELON77
X 0 X

significa che sulle sessioni inserisci i dati dell'utente durante la navigazione delle aree riservate & affini (ma sempre e cmq dati dell'utente)... o almeno io le ho sempre usate così.

per dare delle stringhe in output, creo uno script con tali funzioni (prendon dei valori e rendono una stringa) o variabili o array da includere ad ogni script e da richiamare dove e quando serve.

a mio avviso dovrebb'esser più performante, ma per questo cedo la parola ad altri.

nel caso di progetti un po' più grossi, magari sarebbe meglio affidare la gestione degli errori a un handler...

risposto 8 anni fa
larchitetto
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili