Newsgroup: it.comp.www.php
Titolo: su un server linux funziona, sull'altro no...

Ciao a tutti,
scusate l'intrusione e non so a chi chiedere.
ABSTRACT:
ho una pagina da cui seleziono la lingua di navigazione di un sito.
la selezione avviene mediante l'uso di varaibili di sessione.
Una serie di link impostano la variabile di sessione di conseguenza.
Esempio: 
il link ITA imposta la variabile di sessione lingua a IT
il link UK imposta la variabile di sessione lingua a UK
etc...etc...
in pratica il file di selezione lingua inizia cosi':
<?php
session_start(); #da mettere PRIMA dell'output, inizializza la
sessione
if(isset($HTTP_GET_VARS['lingua']))
 {
        #la registri come di sessione
        $HTTP_SESSION_VARS['lingua']=$HTTP_GET_VARS['lingua'];
		header("Location:".$lingua."/default.htm");
  }
if (!isset($HTTP_SESSION_VARS['lingua'])) #ce l'ho già registrata?
        {
        session_register ('lingua');
        $HTTP_SESSION_VARS['lingua'] = 1; #default!
        }
?>
Poi, inizia la pagina web vera e propria con i suoi link di selezione
lingua. Qui sotto, a titolo di esempio, il link italiano:
<a href="sellingua.php?<? echo SID?>&lingua=it"></a>
RISULTATO:
quando clicco su IT, mi si dovrebbe aprire il file default.htm nella
directory IT.
Su un server (cobalt--->linux) lo fa correttamente, su un altro server
Linux (RH enterprise edition) no.
Io credo si tratti di un problema di gestione delle variabili di
sessione o di settaggi relativi alle directory di apache o del php.
Ma non ho la minima di idea di quale potrebbe essere il parametro da
modificare per fare in modo che questo meccanismo funzioni.
spero che qualcuno di voi lo sappia e che abbia la pazienza di
rispondermi.
vi ringrazio in anticipo.
tony

Mon, 06 Sep 2004 16:09:46 GMT, swee...@NOSPAMiol.it ha detto:
Prova così:
<?php
session_start(); 
if(isset($_GET['lingua']))
 {
        #la registri come di sessione
        $_SESSION['lingua']=$_GET['lingua'];
		header("Location:".$lingua."/default.htm");
  }
if (!isset($_SESSION['lingua'])) #ce l'ho già registrata?
        {
        $_SESSION['lingua'] = 1; #default!
        }
?>
Ciao
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Project Admin di "PHP Reservation - Online booking system" - 
http://phpreservation.sourceforge.net
Dev.Staff di E-Xoopport - 
http://dev.e-xoopport.it

Il Mon, 06 Sep 2004 16:09:46 +0000, sweetman ha scritto:
cat /etc/php.ini|grep session 
e verifica le differenze di session.auto_start
apportate le eventuali modifiche 
/etc/init.d/httpd restart (per RH)


e verifica le differenze di session.auto_start
in che senso "e differenze di  session.auto_start"?
con cosa devo confrontare il valore di session.auto_start?
devo impostarlo ad 1?
ho provato ad impostare questa opzione ad 1 nel file php.ini, ma non
cambia nulla: file not found "/default.htm".
=(.
ciao e grazie per i suggerimenti, comunque.
tony

con cosa devo confrontare il valore di session.auto_start?
come non detto. stamattina non ci sono con la testa.
ora faccio il confronto come dovrebbe essere fatto poi riposto.
scusate.
ciao
tony

Ciao a tutti,
forse ho risolto:
ho cambiato "register_globals = Off"
in 
"register_globals = On"
e sembra funzionare tutto.
Domanda: questa voce impostata su ON ha qualche conseguenza a livello
di sicurezza sull'intero sistema?
grazie per eventuali risposte a tutti.
tony

di sicurezza sull'intero sistema?
Si, le ha, se ne è già parlato decine di volte, è consigliabile una
completa revisione del codice.


di sicurezza sull'intero sistema?
No, e' stato messo su Off per dare fastidio ai nuovi utenti :-)
...scherzi a parte, SI', ha implicazioni: puoi cercare "register_globals
security" (o "sicurezza") sia su 
php.net
 che su Google in proposito.
Leonardo
-- 
Avere studiato senza mettere in pratica e' inutile;
mettere in pratica senza avere studiato e' pericoloso.
                                                - Conphpucio

Leonardo
infatti. grazie per la segnalazione.
Ho visto che questa opzione su ON rappresenta un potenziale pericolo.
Domanda:
se io la re-imposto su OFF, c'e' un modo veloce per fare in modo che
per un determinato sito sia impostata su ON? un qualcosa tipo un
override o simile (sto inventando...).
Dovrei farlo solo per un virtual host su una Red Hat 8 ES.
Altrimenti dovrei ristrutturare un intero sito (abbastanza complesso)
passo per passo.... (sigh!).
ciao e grazie  ;).
tony

passo per passo.... (sigh!).
Si', in .htaccess o nel httpd.conf mi pare tu possa cambiare alcuni
dei parametri di php.ini, e varra' solo per quel virtualhost.
E poi ci sono anche degli script PHP che puoi includere dove serve,
che fanno la stessa cosa dopo aver "disinfettato" $_REQUEST ecc....
non sono 100% sicuri perche' dipende dal codice dopo, certo, ma...
