Reindirizzare utente nell'area in base alla tipologia.

searedone

Utente Attivo
11 Giu 2010
508
0
0
Buongiorno a tutti,
mi spiego meglio:

Ho già un'area riservata che funziona benissimo e grazie al Vostro aiuto ho la possibilità di far vedere in base ai livelli le varie cose nell'area registrata.

Ora mi piacerebbe che se l'utente a ha una classe 1 veda solo le sue cose e di conseguenza venga reindirizzato alla sua area riservata, l'utente b che ha classe 2 veda solo le sue cose e di conseguenza venga reindirizzato alla sua area riservata, e che l'utente 3 admin veda tutto e in più le sue pagine riservate.

Vi posto un po' di codice e spero che possiate aiutarmi.

I livelli li ho messi nella tabella users con un campo enum

`level` enum('1','2') NOT NULL default '1', // ovviamente qui ci sarebbe da aggiungere il campo 3 :)

Login.php

PHP:
<?php
//parte la sessione
session_start ();

//connessione al databese
include 'db_connect.php';

//controllo dei dati inviati 
if ((!isset($_POST['username'])) && (!isset($_POST['password']))) 
{ 
$result=$_SESSION['user_id'];

// form per il login
echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\"> 
Username: <input type=\"text\" name=\"username\" class=\"inputlogin\"><br> 
Password:  <input type=\"password\" name=\"password\" class=\"inputlogin\"><br> 
<input type=\"submit\" value=\"Invia\">Fai il login - Oppure registrati <a href='registrati.php'/>Registrati</a></form>"; 
}else{ 

// query tabella utenti
$sql = mysql_query("SELECT * FROM users WHERE username='".$_POST['username']."' AND password=('".$_POST['password']."')");
if (mysql_num_rows($sql)>0)
{
while ($prova = mysql_fetch_array($sql)) {  
    $num= $prova[0];  
    $_SESSION['username']=$_POST['username'];   
    $_SESSION['password']=$_POST['password'];   
    $_SESSION['user_id']=$prova[0];  
    $_SESSION['level'] = $prova[14]; 
    
    header("Location: mypage.php?id=$prova[0]");  
}
}else{
echo "<h3><img src=\"immagini/non_sei.jpg\" width=\"270\" height=\"55\"><br /><br />Login errato <br /><br /> <a href='login_correct.php' />Ritorna alla pagina login</a><br /><br /><a href='registrati.php'/>Registrati</a></h3>";
} 
}
?>

admin.php

PHP:
<?php

session_start();

//connessione al database

include 'db_connect.php';

$result=$_SESSION['user_id'];
$result=$_SESSION['level'];


//inizio sessione per l'utente che ha effettuato il login

if(isset($_SESSION['username'])&& isset($_SESSION['password']))
{
 $_SESSION['username']; 

}else{
header("Location: login.php");

}

?>


 <?php echo "Benvenuto  "   . $_SESSION['username'];?><br /> 
  <?php echo "Cod Cliente  "   . $_SESSION['user_id'];?><br />
  <?php echo "Tipo cliente  "   . $_SESSION['level'];?><br />


<br />
 <?php 
 

 $query = @mysql_query("SELECT * FROM users WHERE id=".$_SESSION['user_id']." LIMIT 1");
 
   
   while ($ris = mysql_fetch_array($query)) {  
   
$user_id = $ris['id'];
$nome_file_vero= $ris['nome_file_vero'];

 echo "<img src='immagini1.php?id=$user_id' name='nome_file_vero' width='150' height='40'/>" ;
 
 } 
 ?>

<br />
<br />
    <a href="logout.php"><button class="button orangeButt">Logout</button></a> 
//da qui vedono solo i livelli due

<?php if($_SESSION['level'] == '2'): ?>  
 
  <a href="admin.php"><button class="button orangeButt">Amministra <br />Admin</button></a> 
  <a href="mypage.php"><button class="button orangeButt">Torna a <br />my page</button></a>

<?php endif; ?>
 
Ciao e grazie mille per la risposta ...

In che senso il modo SET ??

Non so se mi sono spiegato bene io vorrei che quando mi logo ( es il privato avrà' un admin da privato ) mentre il professionista verra reinderizzato nell'admin da professionista... non so se devo fare due admin :(
 
Ciao,

potresti mettere in mypage.php un collegamento all'admin in base al level dell'utente

PHP:
switch ($_SESSION['level']) {
    case 1:
        $link_admin = "pagina_admin_1.php";
        break;
     case 2:
        $link_admin = "pagina_admin_2.php";
        break;
     case 3:
        $link_admin = "pagina_admin_3.php";
        break;
    default:
        // vuol dire che non è settata la sessione puoi tornare al login
        break;
}
echo "<a href='$link_admin'>Pannello di amministrazione</a>";

due consideraizoni:

in login.php hai
PHP:
$num = $prova[0];
che poi non usi

e
PHP:
$result = $_SESSION['user_id'];
che non usi e cmq quando non hai ancora valorizzato la sessione

una domanda

in admin.php hai

PHP:
echo "<img src='immagini1.php?id=$user_id' name='nome_file_vero' width='150' height='40'/>";

cosa manda in output?
 
in admin.php hai

Codice PHP:
echo "<img src='immagini1.php?id=$user_id' name='nome_file_vero' width='150' height='40'/>";

Il logo personalizzato del cliente o dell'admin

Appena posso provo quello che mi ai postato e ti so dire ..

grazie mille Criric
 
Non ho resistito e ho provato subito....

Ma se metto diversamente mi da errore .. così non me lo da' ma non funziona...

PHP:
require 'db_connect.php';
if ((!isset($_POST['username'])) && (!isset($_POST['password']))) 
{ 



// form per il login
echo "<form method=\"post\" action=\"login.php\"> 
Username: <input type=\"text\" name=\"username\" class=\"inputlogin\"><br> 
Password:  <input type=\"password\" name=\"password\" class=\"inputlogin\"><br> 


 <button class=\"button orangeButt\"><br />Accedi<br /><br /></button>
</form>"; 
}else{ 

// query tabella utenti
$sql = mysql_query("SELECT * FROM users WHERE username='".$_POST['username']."'  AND password=('".$_POST['password']."')");

if (mysql_num_rows($sql)>0)
{
while ($prova = mysql_fetch_array($sql)) {  
    $num= $prova[0];  
    $_SESSION['username']=$_POST['username'];   
    $_SESSION['password']=$_POST['password'];   
    $_SESSION['user_id']=$prova[0];  
    $_SESSION['level'] = $prova[14]; 
   
    
        
    header("Location: mypage.php?id=$prova[0]"); 
   
} 

switch ($_SESSION['level']) { 
    case 1: 
        $link_admin = "mypage.php"; 
        break; 
     case 2: 
        $link_admin = "mypage2.php"; 
        break; 
     case 3: 
        $link_admin = "pagina_admin_3.php"; 
        break; 
    default: 
        // vuol dire che non è settata la sessione puoi tornare al login 
        break; 
} 
echo "<a href='$link_admin'>Pannello di amministrazione</a>";  
}else{
echo "Login errato <br /><br /> <a href='login_correct.php' />Ritorna alla pagina login</a><br /><br /><a href='registrati.php'/>Registrati</a>";
} 
}

Cosi mi da errore dello script ---

PHP:
require 'db_connect.php'; 
if ((!isset($_POST['username'])) && (!isset($_POST['password'])))  
{  



// form per il login 
echo "<form method=\"post\" action=\"login.php\">  
Username: <input type=\"text\" name=\"username\" class=\"inputlogin\"><br>  
Password:  <input type=\"password\" name=\"password\" class=\"inputlogin\"><br>  


 <button class=\"button orangeButt\"><br />Accedi<br /><br /></button> 
</form>";  
}else{  

// query tabella utenti 
$sql = mysql_query("SELECT * FROM users WHERE username='".$_POST['username']."'  AND password=('".$_POST['password']."')"); 



switch ($_SESSION['level']) {  
    case 1:  
        $link_admin = "mypage.php";  
        break;  
     case 2:  
        $link_admin = "mypage2.php";  
        break;  
     case 3:  
        $link_admin = "pagina_admin_3.php";  
        break;  
    default:  
        // vuol dire che non è settata la sessione puoi tornare al login  
        break;  
}  
echo "<a href='$link_admin'>Pannello di amministrazione</a>";   
}else{ 
echo "Login errato <br /><br /> <a href='login_correct.php' />Ritorna alla pagina login</a><br /><br /><a href='registrati.php'/>Registrati</a>"; 
}  
}
 
Per reindirizzare direttamente con header la sintassi piu o meno è questa;

PHP:
<?php
require 'db_connect.php';
if ((!isset($_POST['username'])) && (!isset($_POST['password']))) {



// form per il login
    echo "<form method=\"post\" action=\"login.php\"> 
    Username: <input type=\"text\" name=\"username\" class=\"inputlogin\"><br> 
    Password:  <input type=\"password\" name=\"password\" class=\"inputlogin\"><br> 


    <button class=\"button orangeButt\"><br />Accedi<br /><br /></button>
</form>";
} else {
// query tabella utenti
    $sql = mysql_query("SELECT * FROM users WHERE username='" . $_POST['username'] . "'  AND password=('" . $_POST['password'] . "')");

    if (mysql_num_rows($sql) > 0) {
        while ($prova = mysql_fetch_array($sql)) {
            $num = $prova[0];
            $_SESSION['username'] = $_POST['username'];
            $_SESSION['password'] = $_POST['password'];
            $_SESSION['user_id'] = $prova[0];
            $_SESSION['level'] = $prova[14];
        }

        switch ($_SESSION['level']) {
            case 1:
                header("Location: mypage.php");
                break;
            case 2:
                header("Location: mypage2.php");
                break;
            case 3:
                header("Location: mypage3.php");
                break;
            default:
// vuol dire che non è settata la sessione puoi tornare al login 
                header("Location: Login.php");
                break;
        }
    } else {
        echo "Login errato <br /><br /> <a href='login_correct.php' />Ritorna alla pagina login</a><br /><br /><a href='registrati.php'/>Registrati</a>";
    }
}
?>
 
Ciao,
ho provato così e non mi da più errore...

ma mi da sia che sia livello 1 0 2 mi rimanda sempre a mypage.php?id= non mi rimanda alle varie pagine in base al livello :(

ti posto tutto il codice

PHP:
<?php
//parte la sessione
session_start ();
?>



<?php 
require 'db_connect.php'; 
if ((!isset($_POST['username'])) && (!isset($_POST['password']))) { 



// form per il login 
    echo "<form method=\"post\" action=\"login.php\">  
    Username: <input type=\"text\" name=\"username\" class=\"inputlogin\"><br>  
    Password:  <input type=\"password\" name=\"password\" class=\"inputlogin\"><br>  


    <button class=\"button orangeButt\"><br />Accedi<br /><br /></button> 
</form>"; 
} else { 
// query tabella utenti 
    $sql = mysql_query("SELECT * FROM users WHERE username='" . $_POST['username'] . "'  AND password=('" . $_POST['password'] . "')"); 

    if (mysql_num_rows($sql) > 0) { 
        while ($prova = mysql_fetch_array($sql)) { 
            $num = $prova[0]; 
            $_SESSION['username'] = $_POST['username']; 
            $_SESSION['password'] = $_POST['password']; 
            $_SESSION['user_id'] = $prova[0]; 
            $_SESSION['level'] = $prova[14]; 
        } 

        switch ($_SESSION['level']) { 
            case 1: 
                header("Location: mypage.php"); 
                break; 
            case 2: 
                header("Location: mypage2.php"); 
                break; 
            case 3: 
                header("Location: mypage3.php"); 
                break; 
            default: 
// vuol dire che non è settata la sessione puoi tornare al login  
                header("Location: Login.php"); 
                break; 
        } 
    } else { 
        echo "Login errato <br /><br /> <a href='login_correct.php' />Ritorna alla pagina login</a><br /><br /><a href='registrati.php'/>Registrati</a>"; 
    } 
} 
?>

Questa è la tabella users

PHP:
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `password` varchar(50) NOT NULL,
  `nome` varchar(200) NOT NULL,
  `cognome` varchar(200) NOT NULL,
  `telefono` varchar(50) NOT NULL,
  `email` varchar(100) NOT NULL,
  `web_site` varchar(200) NOT NULL,
  `regiones` varchar(50) NOT NULL,
  `provincia` varchar(50) NOT NULL,
  `comune` varchar(50) NOT NULL,
  `cap` varchar(50) NOT NULL,
  `via` varchar(50) NOT NULL,
  `stato` varchar(50) NOT NULL,
  `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `level` enum('1','2') NOT NULL DEFAULT '1',
  `societa` varchar(50) NOT NULL,
  `p_iva` varchar(100) NOT NULL,
  `note` varchar(500) NOT NULL,
  `nome_file_vero` varchar(255) NOT NULL,
  `tipo_file` varchar(255) NOT NULL,
  `dati_file` longblob NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;

--
 
Ultima modifica:
Ciao,
il quattordicesimo elemento della tua tabella non è "level" ma "ts"

quindi o scrivi

PHP:
$_SESSION['level'] = $prova[15];

oppure usi mysql_fetch_assoc e scriv cosi:

PHP:
<?php

//parte la sessione
session_start();
require 'db_connect.php';
if ((!isset($_POST['username'])) && (!isset($_POST['password']))) {



// form per il login 
    echo "<form method=\"post\" action=\"login.php\">  
    Username: <input type=\"text\" name=\"username\" class=\"inputlogin\"><br>  
    Password:  <input type=\"password\" name=\"password\" class=\"inputlogin\"><br>  


    <button class=\"button orangeButt\"><br />Accedi<br /><br /></button> 
</form>";
} else {
// query tabella utenti 
    $sql = mysql_query("SELECT * FROM users WHERE username='" . $_POST['username'] . "'  AND password=('" . $_POST['password'] . "')");

    if (mysql_num_rows($sql) > 0) {
        while ($prova = mysql_fetch_assoc($sql)) {           
            $_SESSION['username'] = $prova['username'];
            $_SESSION['password'] = $prova['password'];
            $_SESSION['user_id'] = $prova['id'];
            $_SESSION['level'] = $prova['level'];
        }

        switch ($_SESSION['level']) {
            case 1:
                header("Location: mypage.php");
                break;
            case 2:
                header("Location: mypage2.php");
                break;
            case 3:
                header("Location: mypage3.php");
                break;
            default:
// vuol dire che non è settata la sessione puoi tornare al login  
                header("Location: Login.php");
                break;
        }
    } else {
        echo "Login errato <br /><br /> <a href='login_correct.php' />Ritorna alla pagina login</a><br /><br /><a href='registrati.php'/>Registrati</a>";
    }
}
?>

PS : metti var_dump($_SESSION) nella pagina di destinazione se ancora non ti funziona
 
Ultima modifica:
Mi sono permesso di riordinare un attimo il tuo codice, ho commentato le modifiche
PHP:
<?php

//parte la sessione
session_start();
require 'db_connect.php';
if ((!isset($_POST['username'])) && (!isset($_POST['password']))) {

// form per il login 
    // se apri l'echo con i doppi apici all'interno puoi usare i singoli
   // il tag input necessita della chiusura con / il tag form con </form>
    echo "<form method='post' action='" . $_SERVER['PHP_SELF'] . "'>  
            Username: <input type='text' name='username' class='inputlogin'/><br/>  
            Password: <input type='password' name='password' class='inputlogin'/><br/>  
            <button class='button orangeButt'><br/>Accedi<br/><br/></button> 
          </form>";
} else {
// facciamo un giro di controllo sui tutti dati inviati via POST
    foreach ($_POST as $key => $value) {
        // ho messo semplicemente addslashes ma si posso aumentare i controlli con altre funzioni di php o mysql
        $_POST[$key] = addslashes($value);
    }
// query tabella utenti // separando la query secondo me rendiamo il codice piu elegante e leggibile
    $query = "SELECT * FROM users 
                       WHERE username='" . $_POST['username'] . "'  AND 
                             password='" . $_POST['password'] . "'";
    //controlliamo che la query non vada in errore
    if ($sql = mysql_query($query)) {

        // non serve il while poichè la query deve restituire un solo record
        if (mysql_num_rows($sql) == 1) {
            $prova = mysql_fetch_assoc($sql);
            $_SESSION['username'] = $prova['username'];
            $_SESSION['password'] = $prova['password'];
            $_SESSION['user_id'] = $prova['id'];
            $_SESSION['level'] = $prova['level'];

            switch ($_SESSION['level']) {
                case 1:
                    header("Location: mypage.php");
                    break;
                case 2:
                    header("Location: mypage2.php");
                    break;
                case 3:
                    header("Location: mypage3.php");
                    break;
                default:
                    // ripuliamo le sessioni non serve a molto a dir la verita ma non si sa mai
                    unset($_SESSION);
                    header("Location: Login.php");
                    break;
            }
        } else {
            // lo slash nel tag <a href='#'/> non va la chiusura si scrive cosi </a>
            echo "<br/>Login errato<br/><br/> 
                    <a href='login.php'>Ritorna alla pagina login</a>
                    <br/><br/><a href='registrati.php'>Registrati</a>";
        }
    } else {
        // la query potrebbe andare in errore in caso di sqlinjection da parte di malintenzionati
        // sarebbe utile in questi casi registrare ip data e qualsiasi informazione possa servire un domani
        echo "<br/>Autenticazione fallita, se il problema persiste contattare il webmaster<br/><br/> 
                    <a href='login.php'>Ritorna alla pagina login</a>
                    <br/><br/><a href='registrati.php'>Registrati</a>";
    }
}
?>

Non l'ho testato, spero non contenga errori
 
Ultima modifica:
Ciao,
per evitare ho fatto così:

PHP:
<?php 
require 'db_connect.php'; 
if ((!isset($_POST['username'])) && (!isset($_POST['password']))) { 



// form per il login 
    echo "<form method=\"post\" action=\"login.php\">  
    Username: <input type=\"text\" name=\"username\" class=\"inputlogin\"><br>  
    Password:  <input type=\"password\" name=\"password\" class=\"inputlogin\"><br>  


    <button class=\"button orangeButt\"><br />Accedi<br /><br /></button> 
</form>"; 
} else { 
// query tabella utenti 
    $sql = mysql_query("SELECT * FROM users WHERE username='" . $_POST['username'] . "'  AND password=('" . $_POST['password'] . "')"); 

    if (mysql_num_rows($sql) > 0) { 
       while ($prova = mysql_fetch_array($sql)) {   // come vedi non ho più il numero ma ho il campo, ma non mi porta nelle varie pagine e qualsiasi sia il livello va' sempre a mypage ?
    
    $_SESSION['username']=$_POST['username'];   
    $_SESSION['password']=$_POST['password'];   
    $_SESSION['user_id']=$prova['id'];  
    $_SESSION['level'] = $prova['level'];  
        } 

        switch ($_SESSION['level']) { 
            case 1: 
                header("Location: mypage.php"); 
                break; 
            case 2: 
                header("Location: mypage2.php"); 
                break; 
            case 3: 
                header("Location: mypage3.php"); 
                break; 
            default: 
// vuol dire che non è settata la sessione puoi tornare al login  
                header("Location: Login.php"); 
                break; 
        } 
    } else { 
        echo "Login errato <br /><br /> <a href='login_correct.php' />Ritorna alla pagina login</a><br /><br /><a href='registrati.php'/>Registrati</a>"; 
    } 
} 
?>

Il vardump l'ho messo qui e così ma mi da errore ( forse ho sbagliato ?)

PHP:
<?php

session_start();
var_dump($_SESSION)
//connessione al database

include 'db_connect.php';
 
Ciao,
scusa questo non l'avevo visto lo vedo solo ora dopo la mia risposta...

Ho visto che hai messo il form nella stessa pagine e ok , ma se nell'action metti alluz.php che poi potrebbe essere mypage ecc ecc di default mi reindirizza a mypage senza mandarmi a mypage1 2 3 come da switch sotto :(


<?php

//parte la sessione
session_start();
require 'db_connect.php';
if ((!isset($_POST['username'])) && (!isset($_POST['password']))) {

// form per il login
// se apri l'echo con i doppi apici all'interno puoi usare i singoli
// il tag input necessita della chiusura con / il tag form con </form>
echo "<form method='post' action='alluz.php'>
Username: <input type='text' name='username' class='inputlogin'/><br/>
Password: <input type='password' name='password' class='inputlogin'/><br/>
<button class='button orangeButt'><br/>Accedi<br/><br/></button>
</form>";
} else {
// facciamo un giro di controllo sui tutti dati inviati via POST
foreach ($_POST as $key => $value) {
// ho messo semplicemente addslashes ma si posso aumentare i controlli con altre funzioni di php o mysql
$_POST[$key] = addslashes($value);
}
// query tabella utenti // separando la query secondo me rendiamo il codice piu elegante e leggibile
$query = "SELECT * FROM users
WHERE username='" . $_POST['username'] . "' AND
password='" . $_POST['password'] . "'";
//controlliamo che la query non vada in errore
if ($sql = mysql_query($query)) {

// non serve il while poichè la query deve restituire un solo record
if (mysql_num_rows($sql) == 1) {
$prova = mysql_fetch_assoc($sql);
$_SESSION['username'] = $prova['username'];
$_SESSION['password'] = $prova['password'];
$_SESSION['user_id'] = $prova['id'];
$_SESSION['level'] = $prova['level'];

switch ($_SESSION['level']) {
case 1:
header("Location: mypage.php");
break;
case 2:
header("Location: mypage2.php");
break;
case 3:
header("Location: mypage3.php");
break;
default:
// ripuliamo le sessioni non serve a molto a dir la verita ma non si sa mai
unset($_SESSION);
header("Location: Login.php");
break;
}
} else {
// lo slash nel tag <a href='#'/> non va la chiusura si scrive cosi </a>
echo "<br/>Login errato<br/><br/>
<a href='alluz.php'>Ritorna alla pagina login</a>
<br/><br/><a href='registrati.php'>Registrati</a>";
}
} else {
// la query potrebbe andare in errore in caso di sqlinjection da parte di malintenzionati
// sarebbe utile in questi casi registrare ip data e qualsiasi informazione possa servire un domani
echo "<br/>Autenticazione fallita, se il problema persiste contattare il webmaster<br/><br/>
<a href='alluz.php'>Ritorna alla pagina login</a>
<br/><br/><a href='registrati.php'>Registrati</a>";
}
}
?>
 
Si, alluz.php è la mia pagina di prova ma tu devi richiamare la tua

o puoi anche mettere $_SERVER['PHP_SELF'] che richiama la stessa pagina

PHP:
echo "<form method='post' action='" . $_SERVER['PHP_SELF'] . "'>
Username: <input type='text' name='username' class='inputlogin'/><br/>
Password: <input type='password' name='password' class='inputlogin'/><br/>
<button class='button orangeButt'><br/>Accedi<br/><br/></button>
</form>";

io avevo scritto mysql_fetch_assoc

prova a mettere il var_dump qui e blocca lo script che vediamo cosa c'è in sessione

PHP:
$_SESSION['username']=$prova['username'];   
    $_SESSION['password']=$prova['password'];   
    $_SESSION['user_id']=$prova['id'];  
    $_SESSION['level'] = $prova['level'];  
        } 
// metti qui il var_dump
var_dump($_SESSION);
// blocca l'esecuzione dello script
die();
        switch ($_SESSION['level']) { 
            case 1: 
                header("Location: mypage.php"); 
                break; 
            case 2: 
                header("Location: mypage2.php"); 
                break; 
            case 3: 
                header("Location: mypage3.php"); 
                break; 
            default: 
// vuol dire che non è settata la sessione puoi tornare al login  
                header("Location: Login.php"); 
                break;
 
Ciao Criric,
scusa se non ti ho scritto prima ma ho risolto con lo script di prima

PHP:
<?php  
require 'db_connect.php';  
if ((!isset($_POST['username'])) && (!isset($_POST['password']))) {  



// form per il login  
    echo "<form method=\"post\" action=\"login.php\">   
    Username: <input type=\"text\" name=\"username\" class=\"inputlogin\"><br>   
    Password:  <input type=\"password\" name=\"password\" class=\"inputlogin\"><br>   


    <button class=\"button orangeButt\"><br />Accedi<br /><br /></button>  
</form>";  
} else {  
// query tabella utenti  
    $sql = mysql_query("SELECT * FROM users WHERE username='" . $_POST['username'] . "'  AND password=('" . $_POST['password'] . "')");  

    if (mysql_num_rows($sql) > 0) {  
       while ($prova = mysql_fetch_array($sql)) {   // come vedi non ho più il numero ma ho il campo, ma non mi porta nelle varie pagine e qualsiasi sia il livello va' sempre a mypage ? 
     
    $_SESSION['username']=$_POST['username'];    
    $_SESSION['password']=$_POST['password'];    
    $_SESSION['user_id']=$prova['id'];   
    $_SESSION['level'] = $prova['level'];   
        }  

        switch ($_SESSION['level']) {  
            case 1:  
                header("Location: mypage.php");  
                break;  
            case 2:  
                header("Location: mypage2.php");  
                break;  
            case 3:  
                header("Location: mypage3.php");  
                break;  
            default:  
// vuol dire che non è settata la sessione puoi tornare al login   
                header("Location: Login.php");  
                break;  
        }  
    } else {  
        echo "Login errato <br /><br /> <a href='login_correct.php' />Ritorna alla pagina login</a><br /><br /><a href='registrati.php'/>Registrati</a>";  
    }  
}  
?>

Cambiando per comodità come avevi fatto anche tu nella pagina 2 dei post che non avevo visto $_SESSION['level'] = $prova['level']; al posto di $_SESSION['level'] = $prova[14]; ( scusa l'avevo sviluppato tempo fa' ) inizialmente non andava :( poi adesso prova e riprova ho capito il perché e ho risolto.

Io ho una pagina login_correct.php

dove passo le stesse cose di login ( solo per comodità e per bellezza estetica ne ho dovute creare due perché se no messa come voglio io mi da' errore ) mi sono dimenticato di modificare anche il file login.php ovviamente appena cambiato lo script con il tuo switch anche li tutto funziona correttamente.

Grazie mille sei stato davvero gentilissimo :)
 

Discussioni simili