• User Attivo

    Problema con le sessioni e redirect utente loggato

    Ciao a tutti ho un problema con un area di amministrazione di un sito, ho creato la pagina con il form x il login una pagina di controllo dei dati inviati dal form che per verificare le credenziali, il login va a buon fine ma non mi fà il redirect alla pagina admin.php che è quella contenente il menu dell pannello di admin.

    Codice della pagina login_admin.php

    
    <?php
    session_start();
    include "../config/connessione.php";
    
    //controliamo l'invio dei dati
    if ((isset($_GET["login_admin.php"])) && ($_GET["login_admin.php"]== "login")){
    if (!$_POST["username"] || !$_POST["password"])
    {
    die("<p align= \"center\">Devi inserire sia username che password.</p>
    <p align= \"center\"><a href=\"index.php\">Riprova a loggarti</a></p>");
    }
    $username = $_POST["username"];
    $password = sha1($_POST["password"]);
    
    //query d'estrazione dei dati di login
    $query = "SELECT * FROM $tabella_adm_login WHERE adm_username = '$username' AND adm_password = '$password'";
    $result = mysql_query($query) or die (mysql_error());
    if ($obj = mysql_fetch_object($result))
    
    {
        //crea la sessione
        $_SESSION["valid_user"] = $_POST["username"];
        $_SESSION["valid_pass"] = $_POST["password"];
        $_SESSION["valid_time"] = time();
        //sessione creata. vai alla pagina di gestione delle sito
        header("Location: admin.php");
    }
    else
    {
    
        // Messaggio di errore
    die("<p align= \"center\">Impossibile accedere all'area riservata. Username o password errati.</p>
        <p align= \"center\"><a href=\"index.php\">Riprova a loggarti</a></p>");
    }
    }
    ?>
    
    
    
    

    file session.php (che prottegge le pagine per la gestione del sito)

         <?
    session_start();
    
    //controllo delle sessioni
    if ((!isset($_SESSION["valid_user"]))||(!isset($_SESSION["valid_pass"]))||(!isset($_SESSION["valid_time"])))
    {
    
    //redirect verso la pagina di login
    header("Location: index.php");
    }
    ?>
    
    

  • User

    Ciao gabriele1986 se non ti fa il redirect come fai a sapere che sei logato?. Ti da qualche errore?


  • User Attivo

    Non mi da nessun errore e le credenziali di accesso sono corrette


  • User

    E' impossibile che non ti da errore se ti se ti crea le variabili di sessione ti deve fare il redirect gia che si trova netro il IF, oppure hai disabilitato la visualisazione di errori!.


  • User Attivo

    Gli errori sono abilitati sul server

    Questo è lo script original su cui si basa lo schema del log-in

    
    
       <? 
    session_start(); 
    @include "../config/config.php"; 
    
    //controliamo l'invio dei dati 
    if ((isset($_GET["op"])) && ($_GET["op"]== "login")){ 
    if (!$_POST["username"] || !$_POST["password"]) 
    { 
    die("<p align= \"center\">Devi inserire sia username che password.</p> 
    <p align= \"center\"><a href=\"index.php\">Riprova a loggarti</a></p>"); 
    } 
    $username = $_POST["username"]; 
    $password = sha1($_POST["password"]); 
    
    //query d'estrazione dei dati di login 
    $query = "SELECT * FROM $tabella_admin WHERE adm_username = '$username' AND adm_password = '$password'"; 
    $result = @mysql_query($query) or die (mysql_error());
    if ($obj = @mysql_fetch_object($result))
    {
    //crea la sessione
    $_SESSION["valid_user"] = $_POST["username"];
    $_SESSION["valid_pass"] = $_POST["password"];
    $_SESSION["valid_time"] = time();
    //sessione creata. vai alla pagina di gestione delle news
    header("Location: adm_news.php");
    }
    else
    {
    
    // Messaggio di errore
    die("<p align= \"center\">Impossibile accedere all'area riservata. Username o password errati.</p>
    <p align= \"center\"><a href=\"index.php\">Riprova a loggarti</a></p>");
    }
    }
    else
    {
    ?>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Login Admin</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <link rel="stylesheet" type="text/css" href="../css/website.css">
    </head>
    <body>
    <table width="500" border="1" align="center" cellpadding="5" cellspacing="0" bordercolor="#000000">
    <tr> 
    <td bgcolor="#FFCC33"> 
    <table width="100%" border="1" cellpadding="5" cellspacing="0" bordercolor="#000000">
    <tr> 
    <td width="70%"> 
    <? echo "<form action=\"?op=login\""; ?> method="post" name="login_form"">
    <table width="100%" border="1" cellpadding="3" cellspacing="0" bordercolor="#000000">
    <tr bgcolor="#cccccc"> 
    <td width="15%" align="center"><h1>Login Admin</h1></td>
    </tr>
    <tr> 
    <td align="center"> <table width="250" border="0" cellspacing="0" cellpadding="0">
    <tr> 
    <td width="100"><h2>username:</h2></td>
    <td width="150"><input type="text" name="username"></td>
    </tr>
    </table></td>
    </tr>
    <tr> 
    <td align="center"><table width="250" border="0" cellspacing="0" cellpadding="0">
    <tr> 
    <td width="100"><h2>password:</h2></td>
    <td width="150"><input type="password" name="password"></td>
    </tr>
    </table></td>
    </tr>
    <tr> 
    <td align="center"><table width="160" border="0" cellspacing="0" cellpadding="0">
    <tr> 
    <td align="right"><input type="submit" name="submit" value="login"></td>
    </tr>
    </table></td>
    </tr>
    </table>
    </form></td>
    </tr>
    </table></td>
    </tr>
    </table>
    </body>
    </html>
    <?
    }
    ?>
      
    
    

    è funziona senza problemi ma a me non piace perchè preferisco avere 2 file distinti uno con il for e l'altro con solo php che esegue i controlli sui dati inviati