Newsgroup: it.comp.www.php
Titolo: sessioni ed autenticazione

La pagina iniziale (index.php) č utilizzata solo per inserire user e
password, il click sul bottone manda alla pagina dove ho le istruzioni per
valorizzare le variabili di sessione, e tutti i link per utilizzare il
programma (indice.php), cioč:
<?php
session_start();
$_SESSION["utente"]=$_POST["utente"];
$_SESSION["password"]=$_POST["password"];
?>
Il problema č che ogni volta che torno su indice.php (che č la piů
utilizzata) ho un messaggio del tipo:
'Pagina scaduta, clicca su aggiorna per...'
Per evitare ciň ho modificato in questo modo:
fra la pagina di autenticazione (index.php) e quella dell'indice
(indice.php) ho inserito una pagina di benvenuto dove sono presenti le
istruzioni che provocano il messaggio di 'pagina scaduta...' cioč:
<?php
session_start();
$_SESSION["utente"]=$_POST["utente"];
$_SESSION["password"]=$_POST["password"];
?>
e alla fine di tale pagina ho messo un link ad 'indice.php', in maniera
tale evito il messaggio di 'pagina scaduta...' ogni volta che vado
sull'indice;
e tutto funziona bene, Perň come posso evitare tale artifizio?
cioč evitare la pagina di benvenuto senza perň avere ogni volta che salto
su 'indice.php' il messaggio di pagina scaduta?
Nel caso non fossi stato chiaro domani posto il codice 
ciao e grazie
Ale
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 salto su 'indice.php' il messaggio di pagina scaduta?
L'unico metodo e' l'utilizzo di header location ma comunque se l'utente
clicca due volte consecutivamente il tasto back il problema si
ripresenta.
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 [...]
Secondo me indice.php dovrebbe fare solo il suo mestiere, e non gestire
anche l'autenticazione. E' qui che sta l'inghippo. Il login dovrebbe
farlo solo una pagina (index.php). Cambierei index.php in modo che abbia
una struttura del genere:
<?
/* index.php - Login e autenticazione */
define("PAGINA_INDICE", "
http://www.xxx.it/indice.php
");
/*. require_module 'standard';
    require_module 'session'; .*/
function MostraMascheraDiLogin(/*. string .*/ $name)
{
    ?>
    <html><body><h1>Login</h1>
    <form method=post action="<?= $_SERVER['PHP_SELF'] ?>">
    Name: <input type=text value="<?= htmlspecialchars($name) ?>>
    Pass: <input type=password name=pass>
    <input type=submit name=b value=Ok>
    </form>
    </body></html>
    <?
}
if( isset($_SESSION) ){
    # l'utente e' gia' loggato, ed e' finito qui per sbaglio.
    header(PAGINA_INDICE);
} else if( isset($_POST['name']) and isset($_POST['pass']) ){
    # ricevuto submit dal form di login.
    $name = (string) $_POST['name'];
    $pass = (string) $_POST['pass'];
    if( $name e $pass sono validi ){
        session_start();
        $_SESSION['name'] = $name;
        header(PAGINA_INDICE);
    } else {
        MostraMascheraDiLogin($name);
    }
} else {
    # in tutti gli altri casi, login mask:
    MostraMascheraDiLogin("");
}
?>
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it