[risolto] win 8.1 + IE11 le sessioni PHP non fuonzionano correttamente

Emanuele.Basilicata

Nuovo Utente
30 Ott 2013
21
0
1
Buongiorno,

Vi posto 2 script in php: il primo (prova1) apre la sessione, la "rigenera", visualizza gli ID e passa l'ultimo ad una form per richiamare l'altro script (prova2), dove apro la sessione, visualizzo l'ID, visualizzo il dato passato dalla form e distruggo la sessione.

Nel pc win 8 è installato EASYPHP ed utilizzo IE11.

Problema il file sessione non viene riscritto bensi generato nuovo ad ogni session_start e session_regenerate_id.

Nello stesso pc con gli altri browser (firefox, Safari, Chrome, Opera) tutto ok. Tutto ok anche con Win 7.

Di più.
Ho anche un sito su un server remoto con un abbonamento hosting qui i 2 programmi funzionano come in locale ad eccezione di browser IE11 e Win8.
Di più.
Ho un mac-pro e i 2 script in remoto funzionano bene.
Di più.
Ho un HP con win7 e i 2 script in remoto funzionano bene.


----------------------------prova 1-------------------------
PHP:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>prova1 form imposta sessione su win8 IE11</title>
</head>
<body>
<?php
session_start();
echo "sessione aperta ";
$id_ses = session_id ();
echo $id_ses;
session_regenerate_id ();
echo " nuova sessione ";
$id_ses_re = session_id ();
echo $id_ses_re;
?>
<form name = "dati" action="../../prova2.php" method="post" autocomplete="off">
<input type="hidden" name="id_sess" value=<?php echo $id_ses_re?>>
<input  name="invia" type=submit value="INVIA">
</form>
</body>
</html>

-------------------------------------prova2-----------------------------
PHP:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>prova2 visualizzo id e cancello sesione</title>
</head>
<body>
<?php
session_start ();
$ses_prova2 = session_id ();
echo "codice sessione aperata in prova2 ";
echo $ses_prova2;
$sess_form = $_POST['id_sess'];
echo " codice sessione da form ";
echo $sess_form;
session_destroy ();
?>
</body>
</html>
 
Ultima modifica di un moderatore:
session_start() dovrebbe essere richiamata prima di un qualsiasi output al browser, come dice la documentazione di php.net.

Prova pertanto a modificare il tuo codice così ed esegui nuovamente i vari test:
PHP:
<?php
session_start();

#> Sto usando l'output buffer giusto per comodità
#> Per stampare i messaggi nella zona corretta del documento html.
ob_start();

echo "sessione aperta ";
$id_ses = session_id ();
echo $id_ses;
session_regenerate_id ();
echo " nuova sessione ";
$id_ses_re = session_id ();
echo $id_ses_re;

$output = ob_get_clean();

?><!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>prova1 form imposta sessione su win8 IE11</title>
</head>
<body>

<?php echo $output; ?>

<form name = "dati" action="../../prova2.php" method="post" autocomplete="off">
<input type="hidden" name="id_sess" value=<?php echo $id_ses_re?>>
<input  name="invia" type=submit value="INVIA">
</form>
</body>
</html>
 
Provato con session in testa alla pagina e inserito ob_start ma tutto come prima: il file session non viene sovrascritto ma generato nuovo per ogni session_start e session_regenerate_id.
 
Dal momento che con altri browser funziona direi che il file sul server viene creato correttamente, piuttosto sembra che sia IE11 a non conservare il cookie con l'id di sessione nello scenario che descrivi.

Prova a vedere se ci sono delle impostazioni di protezione che bloccano l'accettazione dei cookie verso quella tua risorsa.
 
ok grazie per le indicazioni.

Vorrei però avere se possibile questo riscontro: c'è qualcuno che ha un pc con installato win 8.1 e IE11 e può provare i miei 2 script e dirmi se funzionano ?

Perchè il problema è limitato a win 8.1 e non al browser IE 11.0 visto che nell'altro pc che ho con win 7 e IE11, i 2 script vengono eseguiti correttamente.

Potrebbe essere che solo nel mio pc con win8 ci sia una risorsa che impedisce il buon funzionamento.

Grazie dell'interessamento.
 
Risolto

In effetti nel browser IE11 che gira su win8, tra le opzioni internet scheda sicurezza, c'era la protezione massima riguardo i cookie, di conseguenza non potevano essere memorizzati.

A questo punto in prova1 ho settato un cookie e in prova2 ho verificato la sua esistenza => se !isset cookie il browser non li accetta quindi segnalo ed evito di proseguire.

Grazie.

Saluti.
 
Risolto

...chiedo scusa il parametro settato in IE11 che mi davea i problemi si trova in Opzioni internet -> Privacy....... Grazie.
 

Discussioni simili