Newsgroup: it.comp.www.php
Titolo: autenticazione problema logout (lungo)

Salve a tutti,
ho un problema con il logout dal sito nel senso che
dopo aver fatto il logout se uso le frecciette "indietro" del browser
riesco a vedere le pagine precedenti benchč abbia fatto il logout...
**********************************************************
************************************************************
questo č lo script iniziale di autenticazione e sembra funzionare......
<?php
//access_logger.php
include "./common_db.inc";
$register_script = "./register.php";
$user_tablename = 'user';
$access_log_tablename = 'access_log';
function  login_form() {
global $PHP_SELF, $cont_form;
?>
<form method="POST" action="<? echo $_SERVER['PHP_SELF'] ?>">
  Utente<font size="-1">:<br>
  <input type="text" size="15" name="userid">
  <br>
  Password:<br>
  <input type="password" size="15" name="userpassword">
  <br>
  Save in cookie?&nbsp;
  <input type="checkbox" name="cookie">
  <br>
  <input type="submit" name="login" value="Login">
  &nbsp; </font>
</form>
<?
}
function do_autentication() {
 global $PHP_AUTH_USER, $PHP_AUTH_PW, $PHP_SELF;
 global $userid, $userpassword, $register_script, $cont_form;
 global $default_dbname, $user_tablename, $access_log_tablename;
 global $MYSQL_ERROR, $MYSQL_ERRNO;
 session_start();
 $userid = $_POST['userid'];
 $userpassword = $_POST['userpassword'];
 if (!isset($userid)) {
  login_form();
  exit;
 }
 else {
  session_register("userid", "userpassword");
  $query = "select username from $user_tablename
     where userid = '$userid'
     and userpassword = '$userpassword'";
  $result = mysql_query($query);
  if(!mysql_num_rows($result)) {
   session_unregister("userid");
   session_unregister("userpassword");
   echo "Autorizzazione fallita. ".
    "Devi inserire un valido username e password. " .
    "Clicca qui per provare ancora.<br>\n";
   echo "<a href=\"$PHP_SELF\">Login</a><br>";
   echo "Se non sei registrato clicca qui per registrarti.<br>\n";
   echo "<a href=\"$register_script\">Registrazione</a>";
   exit;
  }
  else {
   //echo "welcome, $userid";
   $query = "update $user_tablename set lastaccesstime = NULL
     where userid = '$userid'";
   $result = mysql_query($query);
   $rif_pagina = $_SERVER['PHP_SELF'];
   $query = "select userid from $access_log_tablename
     where page = '$rif_pagina' and userid = '$userid'";
   $result = mysql_query($query);
   if (!mysql_num_rows($result)) {
   $query = " insert into $access_log_tablename values
     ('$rif_pagina', '$userid', 1,null)";
   }
   else {
   $query = "update $access_log_tablename
      set visitcount = visitcount + 1, accessdate = null
      where page = '$rif_pagina' and userid = '$userid'";
   }
   mysql_query($query);
   }
 }
 }
?>
****************************************************
****************************************************
Questa č la pagina di LOGOUT che non funziona, nel senso che
dopo aver fatto il logout se uso le frecciette "indietro" del browser
riesco a vedere le pagine precedenti benchč abbia fatto il logout...
<?
// LOGOUT
session_start;
session_unregister("userid");
session_unregister("userpassword");
Session_destroy();
include "./access_logger_new.php";
do_autentication() ;
//  header("Location: 
http://www.assi-net.it/
");
?>
*********************************************************
*********************************************************
Questa č la funzione AUTENTICA che uso su ogni paginetta....
function autentica() {
 include "./common_db.inc";
 $user_tablename = 'user';
 $access_log_tablename = 'access_log';
 session_start();
 $userid = $_SESSION['userid'];
 $userpassword = $_SESSION['userpassword'];
 $query = "select username from $user_tablename
   where userid = '$userid'
   and userpassword = '$userpassword'";
 $result = mysql_query($query);
 if (!mysql_num_rows($result)) {
  session_unregister("userid");
  session_unregister("userpassword");
  echo "Autorizzazione fallita. ";
  do_autentication() ;
  } else {
   if (isset($userid) and isset($userpassword)) {
//    print("Variabili SETTATE");
    print($userid);
    $query = "update $user_tablename set lastaccesstime = NULL
      where userid = '$userid'";
    $result = mysql_query($query);
    $rif_pagina = $_SERVER['PHP_SELF'];
    $query = "select userid from $access_log_tablename
     where page = '$rif_pagina' and userid = '$userid'";
    $result = mysql_query($query);
    if (!mysql_num_rows($result)) {
    $query = " insert into $access_log_tablename values
      ('$rif_pagina', '$userid', 1,null)";
    }
    else {
    $query = "update $access_log_tablename
       set visitcount = visitcount + 1, accessdate = null
       where page = '$rif_pagina' and userid = '$userid'";
    }
    mysql_query($query);
    } else {
    //print("Variabili NON SETTATE");
    do_autentication() ;
    }
  }
}
?>
grazie!
ringo


Credo che tu debba anche settare
$userid="";
$userpassword="";
nella funzione di logout, perché mi sembra che la funzione
session_unregister() non annulli il valore della variabile.
Angiblu

 ha scritto nel messaggio
news:begj76$ujv$1...@lacerta.tiscalinet.it...

avevo già provato ma non funziona :-)
non ne vado più fuori
grazie cmq
ringo

> non ne vado più fuori
Se nel frattempo non hai trovato una soluzione, mi è venuta in mente
un'altra cosa: non è che è colpa della cache?
Quando vai 'Indietro' col browser, prova a cliccare su 'Aggiorna': se ti
rimanda al login, era la cache.
Per disabilitarla, usa questo codice (preso pari pari dal manuale di
php.net
, alla voce header):
  header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  header("Cache-Control: no-store, no-cache, must-revalidate");
  header("Cache-Control: post-check=0, pre-check=0", false);
  header("Pragma: no-cache");
Ciao. :-)
Angiblu

 ha scritto nel messaggio
news:bej686$5v0$1...@lacerta.tiscalinet.it...

grazie ci provo!
byeZ Angel