Variabili di sessioni & link di provenienza

Mettiamo il caso che io abbia un'area riservata composta da due pagine (link1, link2)all'interno del mio sito; ora, ovviamente avrò un login con:

<?php 
session_start(); 
print ("");

$dati = mysql_query ("select * from tabella WHERE password='$password' AND nome='$nome'");
while ($array = mysql_fetch_array($dati)) 
{ 
     switch ($array[password]){ 
case xxxx: 
            header ("location: [b]???[/b]");
        $trov=1; 
        break;   
  } 

} 

if ($trov!=1) 

{ 
echo"Errore""; 
}       
if ($trov=1) 
{ 
   $_SESSION['login_effettuato'] = true; 
} 
?>

poi nelle mie 2 pagine metterò un controllo del genere:

<?php 
session_start(); 

if (!$_SESSION['login_effettuato']) 
{ 
   header ("location: login.php");
   exit();

dove rimando la login se questo non è stato effettuato

Il problema sta nel poter stabilire a quale pagina l'utente aveva provato a collegarsi e, una volta superato il login reindirizzarlo proprio su quella(link1) piuttosto che su questa(link2).

Spero di essere stato abbastanza chiaro, a presto!

inviato 11 anni fa
yusizu
X 0 X

Considerando che stai usando le sessioni potresti mettere nelle pagine link1 e link2 qualcosa del genere:

<?php
session_start();

if (!$_SESSION['login_effettuato'])
{
   $_SESSION['provenienza'] = 'link1.php';
   header ("location: login.php");
   exit();

oppure:

<?php
session_start();

if (!$_SESSION['login_effettuato'])
{
   $_SESSION['provenienza'] = $_SERVER['PHP_SELF'];
   header ("location: login.php");
   exit();

mentre la funzione header della pagina di login potrebbe essere:

$pag_destinazione = !empty($_SESSION['provenienza']) ? $_SESSION['provenienza'] : 'pag_di_default.php';
header ("location: $pag_destinazione");

la primariga serve per verificare che la variabile $_SESSION['provenienza'] abbia un contenuto e assegnarla a $pag_destinazione. In caso contrario $pag_destinazione assumerà il valore 'pag_di_default.php'

Ciao.

risposto 11 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda