- Home
- Categorie
- Coding e Sistemistica
- PHP
- Aiuto sessione che non si propaga... credo...
-
Aiuto sessione che non si propaga... credo...
Ciao a tutti
temo mi sfugga qualcosa sulla gestione delle sessioni in php.Mi spiego meglio. Sto realizzando un sistema di login.
in parole povere:
Ho una pagina in cui verifico i dati inseriti dall'utente, con quelli salvati nel db. Questa pagina fa partire una sessione. Nella sessione inserisco alcuni dati dell'utente.
Se tutto risulta corretto passo ad un altra pagina che dovrebbe leggere i dati salvati nella sessione.
Qui tutto si ferma. i dati salvati nella sessione non me li vuole proprio mostrare.
Ho visto parecchie guide in cui si parla di propagare manualmente il PHPSESSID in caso di cookie disabilitati.
La cosa strana è che il mio PHPSESSID se lo richiamo viene stampato a schermo. Questo mi fa presumere che i cookie stiano funzionando.
Per il momento non ho effettuato verifiche sui cookie, in quanti sin dall'inizio, se richiedo i dati salvati nella sessione, nella stessa pagina in cui viene aperta, me li stampa senza problemi.
Oltretutto il pc è il mio, e i cookie sono abilitati.
Cosa che non mi è ben chiara è la differenza tra PHPPSESSID e SID, sono la stessa cosa? cambiano solamente in base alla versione di php?
Mi potreste aiutare a capire cosa mi sfugge?
Altre info:
Per l'aggiunta dei dati alla sessione uso la variabile $_SESSION
Prima di richiamare i dati li salvo in una variabile (ho visto che non si possono richiamare all'interno di una stringa)
Tutti i dati sono salvati anche in un cookie dal quale riesco a leggerli senza problemi.
Ho globalizzato le variabili $HTTP_POST_VARS, $_COOKIE ( a livello di test)
Per richiamare PHPSESSID uso semplicemente la variabile $PHPSESSID
La versione di php è 4.4.7 su server aruba
I valori session.use_only_cookies off session.use_trans_sid off
Tutte le parti di codice relative a cookie e sessioni si trovano prima dell'apertura dei tag htmlUn anticipato grazie a tutti coloro che mi sapranno aiutare
Ciao
-
tieni presente che su aruba è attivo il register globals
io avevo lo stesso problema e come sempre davano la colpa a noi programmatori
io lho risolto facendo un if sull'inizializzazione delle variabiliif(isset($_session[login])
{
...........
variabili
................
}qualkosa in questo stile
però controlla che il tuo script sia giusto
magari testalo in locale disattivando il register_globals almeno vedi se è quello se no magari è il tuo script
ciauz
-
E se non è isset?
Cosa succede?Tocca non usare le sessioni e tutto il casino che ho fatto fin ora non serve a niente?
Mi son messo un if che chiede se la variabile è settata, dice che non esiste...
Ho anche provato a passare in get la variabile ?PHPSESSID ma il risultato non cambia.
Lo script, non credo sia sbagliato tutto quello che fa è:
(sulla prima pagina)
session_start()
$_SESSION[] = variabile(sulla seconda pagina)
variabile per stringa = $_SESSION[]echo variabile per stringa
-
Ho fatto un test a register globals spente utilizzando:
Questo emula register_globals Off. Ricorda che questo codice deve essere chiamato all'inizio dello script, oppure dopo session_start() se lo usi per iniziare la session.
<?php
// Emulazione di register_globals off
function unregister_GLOBALS()
{
if (!ini_get('register_globals')) {
return;
}// Might want to change this perhaps to a nicer error if (isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS'])) { die('GLOBALS overwrite attempt detected'); } // Variables that shouldn't be unset $noUnset = array('GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES'); $input = array_merge($_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array()); foreach ($input as $k => $v) { if (!in_array($k, $noUnset) && isset($GLOBALS[$k])) { unset($GLOBALS[$k]); } }
}
unregister_GLOBALS();
?>
ma il ruìisultato non cambia...
Secondo voi funziona sto giochino, oppure le register globals non centrano?
-
in testa a tutti i file php che devono utilizzare la sessione metti ```
session_start();
-
Sul serio? va in tutte le pagine?
Si arrangia lui poi a capire che la sessione è gia stata aperta tramite il PHPSESSID?
Glielo devo passare io? oppure baste che esista?
Magari lo devo far diventare SID?
Scusate tutte ste domande a raffica ma se è solo cosi ci resto davvero come un pirla...
Altra cosa avendo la sessione che si apre su queste pagine, non rischio che qualcuno ci possa inserire quel che gli pare??
Magari tramite una form?
Viene riconosciuto session start da htmlentities o striptags?
-
session_start() riconosce tutto da solo e non cè bisogno di registrare di nuovo i parametri di sessione