sessione autenticazione

  • Creatore Discussione Creatore Discussione qwew
  • Data di inizio Data di inizio

qwew

Nuovo Utente
3 Gen 2012
2
0
0
Ciao,

nel mio sito ho 2 aree riservate distinte ognuna per accedervi richiede autenticazione; entrambi i login.php delle aree per il controllo accesso cercano in una certa tabella del db (tab1 per area1 e tab2 per area2) il match tra username e password. In caso di match l'utente viene loggato e faccio partire una sessione che controllerò se attiva in ogni file protetto.

Codice:
//file login.php
session_start();
$_SESSION['username'] = $record['username'];

Codice:
//file controllaautenticazione.php
// Controllo accesso 
session_start();
if (!isset($_SESSION['Username']))
  {
    header('location:login_failed.php');
  exit;
  }
Problema; Se la sessione è identica per le 2 aree , ossia entrambi i login on caso di match eseguono le 2 righe di codice sopra in login.php, può capitare che un utente che si logga nell'area1 possa entrare direttamente nell'area2 saltando il login??
in altre parole se controllaautenticazione.php controlla l'esistenza della $_SESSION['Username'] non so se questa è creata dall'area1 o area2 giusto?
 
Hai due soluzioni. O cambi il nome della sessione che contiene lo username dell'utente a seconda della sezione a cui ha accesso (non molto elegante ma anche un po' più semplice, forse), oppure memorizzi in un'altra variabile di sessione qual è l'area che l'utente è autorizzato a vedere. Nel file login.php:
PHP:
<?php
session_start();

$_SESSION['username'] = $username;
$_SESSION['area'] = $area;
 
Sarebbe meglio creare un valore univoco ad ogni login in modo che non ci siano ambiguità, basterebbe creare un apposito valore da inizializzare in sessione ad ogni autenticazione.
 
Eliox,

ti ringrazio per la risposta, ma puoi per cortesia farmi un'esempio pratico..o un link

Grazie mille
 

Discussioni simili