warning apparentemente casuale su sessione

alcune volte, mentre provo la mia applicazione php, appare uno strano warning. il problema che appare in random, o meglio, ancora non ho capito bene da cosa è dovuto visto che non ha una costanza nel farsi vivo...

posto il messaggio:

Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

inviato 8 anni fa
larchitetto
X 0 X

In effetti l'errore si verifica come effetto collaterale (side effect) su una chiamata alla sessione, e su una chiamata al register global, ovvero in un qualche momento durante la navigazione un valore viene passato alla sessione da qualche parte e questo fa sì che il motore del php lanci un avviso.

Per esempio (dal manuale)

<?php
  session_start();
  $_SESSION['var'] = NULL;
  $var = "foo";
?>

dove il valore nullo fa sì che venga lanciato quell'avviso. Una sessione non può essere nulla, per lei è un controsenso in termini, se c'è una sessione è perché qualcuno sta navigando sul sito, se sta navigando sul sito la sessione c'è e non è nulla.

La soluzione è nell'avviso stesso la alla fine del messaggio.

Dice anche puoi evitare questo avviso disabilitando i warning relativi ai bug di sessione, ma è sempre meglio avere degli avvisi di questo genere almeno fino a quando la tua applicazione non sia perfettamente funzionante, o non avresti mai saputo di questo bug.

Un consiglio sincero, passa ad una versione del PHP più giovane e con meno bug o rischi seriamente che la tua applicazione possa essere attaccata.

risposto 8 anni fa
Marco Grazia
X 0 X

beh il problema è che non sono io l'amministratore del server: posso far presente all'admin di aggiornare il motore php... di contro a casa mia uso un apache come tester e un php 5.x =D

tornado al topic, controllo se per errore ho messo su qualche sessione nulla; sinceramente pensavo che il problema si verificava nel momento in cui le sessioni scadevano.

è lecito in uno script:

<?php
session_start(); 
//operazioni varie, poi non mi servon più le sessioni precedenti
session_destroy(); 
session_start();
$_SESSION["id"]["nuova_session"];
//distruggo la precedente e creo la nuova sessione e proseguo con lo script
?>

o come andrebbe fatto?

grazie

risposto 8 anni fa
larchitetto
X 0 X

guarda qui (in fondo alla pagina):

http://www.phpnews.it/articoli/php/le-sessioni/2/

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

letto tutto e applicato, grazie.

cmq penso d'aver risolto il problema intervenendo nello script...

in sostanza, la pagina, vedendo una sessione scaduta, mandava il messaggio indicato.

son intervenuto con un redirect della pagina che ricrea la sessione e adesso è tutto ok (spero)...

grazie

risposto 8 anni fa
larchitetto
modificato 8 anni fa
X 0 X

...dimenticavo...

ma è possibile recuperare i dati di una sessione scaduta??

risposto 8 anni fa
larchitetto
X 0 X

Quando la sessione è scaduta non puoi più fare niente...  :dunno:

 :bye:

risposto 8 anni fa
Marco Dario
X 0 X

ah ok le mie informazioni eran esatte <.<

grazie =D

risposto 8 anni fa
larchitetto
X 0 X

E di pure all'amministratore del tuo server che il php tra poco passa alla versione 5.2.6 tanto per fargli gli auguri di buona pasqua ;) eventualmente digli che stai pensando di migrare su un server migliore, vedrai che ti ascolterà :D

risposto 8 anni fa
Marco Grazia
X 0 X

lol =D

vedrò <.<

cmq mi ha confermato che è un versione 5.x (non ricordava quale di preciso perchè è in vacanza)... magari metterà su la nuova quando torna O_O

...ma come potrei migrare altrove sapendo di avere un account - cliente gratuito dove posso fare infiniti siti con spazio, banda, query, creazione di DB "infiniti"? mi stava pure installando un server di UO (dietro richiesta) :D

va bien, di sicuro lo installerò a casa mia per i test :P

buona pasqua a tutti  8)

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