Salve a tutti.
Nel mio sito (http://automodelli.altervista.org/) ho inserito un'area riservata e ovviamente anche l'area in cui gli utenti si possono registrare..
Una volta inseriti i dati viene eseguito il file controllo_dati.php che appunto controlla la validità di ciò che l'utente ha inserito..
Una volta fatto questo, se i dati sono corretti, questi ultimi vengono inseriti nel database e viene lanciata la pagina invio_mail.php (a cui viene passato tramite metodo GET l'id della riga corrispondente del db) che si occupa di inviare all'utente una mail di riepilogo dei dati appena introdotti.
Fatto questo viene lanciata una pagina di riepilogo in cui tra l'altro si avvisa l'utente del corretto (o meno) invio della mail riepilogativa.
Premetto che ho preferito spezzare tutte queste fasi in 3 file poichè il sito ha uno scopo didattico (è un progetto dell'università) e quindi preferisco mantenere una certa pulizia nel codice..
Mi piacerebbe che la pagina di riepilogo fosse visibile solo ed esclusivamente dopo l'inserimento dei dati, in modo che sia visibile solo all'utente interessato e a nessun altro (nel remoto caso il browser venga poi utilizzato da qualcun'altro, magari senza che nel frattempo sia stato chiuso.. Lo so è alquanto raro, ma è per un esame..)
Per questo avevo pensato di confrontare la pagina di provenienza dell'utente con quella che lancia la pagina di riepilogo (la invio_mail.php, che può essere lanciata solo in seguito alla corretta introduzione dei dati per la registrazione..).
A tale scopo avevo utilizzato la variabile di sessione $_SERVER['HTTP_REFERER']
Qui però è sorto il mio problema: con Mozilla il tutto funziona perfettamente (provare per credere..) ma con Internet Explorer invece non funziona, infatti non viene interpretato HTTP_REFERER.
Questo è il codice da me utilizzato per fare tale confronto:
<?php
session_start(); //inizia la sessione
$redirect="accesso_negato.php";
$prov="http://automodelli.altervista.org/utenti/invio_mail.php?id=$_GET[id]";
if ($_SERVER['HTTP_REFERER'] != $prov)
{
$_SESSION=array(); // Desetta tutte le variabili di sessione.
session_destroy(); //Distrugge la sessione.
header("Location: $redirect");
}
else
{
$_SESSION=array(); // Desetta tutte le variabili di sessione.
session_destroy(); //Distrugge la sessione.
?>
Poi segue il codice necessario per visualizzare il riepilogo.
Ho provato ad usare apici, virgolette ($_SERVER["HTTP_REFERER"]), oppure niente, ma il risultato non cambia e non capisco perchè (maledetto Bill..)
Sarei molto grato a chiunque riuscisse a darmi un suggerimento, altrementi dovrò cambiare l'approccio alla questione, ma francamente mi piacerebbe usare questa..