Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    19

    Problema con SESSION e LOGIN

    Ciao a tutti, vi mostro i file che sto usando e poi vi spiego dove sta il problema...

    1-FILE configuraammdip.php

    <?php

    function connect(){

    mysql_connect("localhost", "root", "");
    mysql_select_db("sito");

    }


    ?>

    2-FILE headerammdip.php

    <?php

    include 'configuraammdip.php';
    connect();
    session_start();

    ?>

    3-FILE loginammdip.php

    <?php

    include 'headerammdip.php';

    ?>
    <form name="form1" method="post" action="accedialcontrollo.php">
    <table width="95%" align="center" >
    <tr>
    <td colspan="2"><div align="center">Accesso privato per i Dipendenti</div></td>
    </tr>
    <tr>
    <td>Username</td>
    <td><input type="text" name="username"></td>
    </tr>
    <tr>
    <td>Password </td>
    <td><input type="text" name="password"></td>
    </tr>
    <tr>
    <td colspan="2"></td>
    </tr>
    <tr>
    <td colspan="2"><div align="center">
    <input type="submit" name="Submit" value="Accedi">
    </div></td>
    </tr>
    </table>
    </form>


    4-FILE accedialcontrollo.php

    <?php
    $user=$_POST["username"];
    $pass=$_POST["password"];
    if($user=='admin' && $pass=='admin'){
    header("Location: paginaamministratore.php");
    }
    elseif($user=='dipendente' && $pass=='dipendente'){
    header("Location: paginadipendente.php");
    }
    else{echo"non sei un dipendente";
    header( "refresh:3;url=index.php" );
    }

    ?>

    praticamente c'è un problema, dopo aver letto la teoria non ho capito come usare bene le session.Infatti le pagine paginaamministratore.php e paginadipendente.php sono raggiungibili anche senza fare il login.Il mio scopo sarebbe vietare quelle pagine a chi non fa il login.
    Potreste modificare questi file cosi che possa capire??

    VI ringrazio in anticipo.....

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Un sistema di login, in linea di massima funziona così:

    1 Nella pagina di login, dopo il POST, controlli se le credenziali son valide (da DB, file o come vuoi). Nel caso fossero corrette ti salvi in sessione i dati dell'utente (e tutto quello di cui hai bisogno, ad esempio il ruolo) e fai il redirect su una determinata pagina; nel caso fossero errare mostri un messaggio di errore.

    2 Nella pagine che richiedono una autorizzazione, verifichi che in sessione ci siano i dati dell'utente, e se necessario, se quell'utente può accedere alla pagina.

    Questo è un sistema di login di base, poi si possono aggiungere funzionalità in base alle necessità.

    Nel tuo caso, banalmente puoi fare:

    accedialcontrollo.php
    Codice PHP:

    <?php
    session_start
    ();
    $user=$_POST["username"];
    $pass=$_POST["password"];
    if(
    $user=='admin' && $pass=='admin'){
       
    $_SESSION['user'] = "admin";
       
    header("Location: paginaamministratore.php");
    }
    elseif(
    $user=='dipendente' && $pass=='dipendente'){
       
    $_SESSION['user'] = "dipendente";
       
    header("Location: paginadipendente.php");
    }
    else{echo
    "non sei un dipendente";
       
    header"refresh:3;url=index.php" );
    }

    ?>
    nelle pagine paginaamministratore.php, paginadipendente.php ed in TUTTE quelle con restrizioni all'accesso:

    paginaamministratore.php
    Codice PHP:

    <?php
      
    include 'headerammdip.php';
      if(!(isset(
    $_SESSION['user']) && $_SESSION['user'] == "admin") ){ 
         
    // Gestione accesso senza permessi
         
    header("Location: loginammdip.php");
         exit();
      }
      
    // L' utente è loggato e può vedere il contenuto della pagina 
      
    ...

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420
    Originariamente inviato da boots
    Codice PHP:
    ...
    else{echo
    "non sei un dipendente";
       
    header"refresh:3;url=index.php" );
    }

    ?> 

    Ciao Boots, scusa se mi inserisco, ma questa porzione di codice, non dovrebbe generare un errore a causa di un output (l'eco) precedente l'invio di un header?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    19

    Problema SESSION e LOGIN

    grazie per la celerità,sei stato di grande aiuto....
    quindi in ogni caso in cui devo fare un login con controllo sulle pagine posso usare questa tecnica???

    Grazie tante....

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    19

    ultimo dubbio....

    questa è un altra situazione simile a quella di prima, tuttavia non capisco come fare...

    1-FILE config.php

    <?php

    function connect(){

    mysql_connect("localhost", "root", "");
    mysql_select_db("sito");

    }


    ?>


    2-FILE header.php

    <?php

    include 'config.php';
    connect();
    session_start();

    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <link rel="stylesheet" type="text/css" href="stile.css">
    <title>Tennis Center Rizziconi</title>

    <script type="text/javascript" src="js/jquery-1.3.2.js"></script>
    <script type="text/javascript" src="js/jquery.validate.js"></script>
    <script type="text/javascript" src="js/controlloregistrazione.js"></script>

    </head>

    <body>

    <div id="menu">

    <div class="menuwrapper">

    <div class="menunav">

    <ul>
    [*]Home
    [/list]

    </div>

    <div class="usernav">

    <ul>
    <?php if(isset($_SESSION['utente'])){

    echo "[*]Benvenuto <span class='utente'>".$_SESSION['utente']."</span> | Esci";

    } else {

    echo "[*]Registrati";
    echo "[*]Accedi";

    } ?>

    [/list]

    </div>

    </div>

    </div>

    <div id="header">

    <h1><span class="red">Tennis</span><span class="orange">Center</span><span class="blue">Rizziconi</span></h1>

    </div>


    3-FILE login.php

    <?php

    include 'header.php';

    ?>

    <div id="wrapper">

    <?php

    $p = $_GET['azione'];

    // login.php?azione=login
    if($p == "login"){

    if(!isset($_POST['invia'])){ ?>

    <form method="post" action="#" id="formlogin">

    <label for="username">Username</label>
    <input type="text" name="username" id="username" />

    <label for="password">Password</label>
    <input type="password" name="password" id="password" />

    <input type="submit" name="invia" id="login" value="Accedi" />

    </form>

    <?php echo "Hai dimenticato la password e la username?[/b]
    ";
    echo "<a href=\"recuperapass.php\">[/b]
    Recupera I Tuoi Dati[/b]
    [/b]
    </a>";

    } else {

    $username = mysql_real_escape_string($_POST['username']);
    $password = mysql_real_escape_string($_POST['password']);

    if($username == "" || $password == ""){

    echo "Attenzione, devi compilare tutti i campi";

    } else {

    //$password_cript = md5($password);

    $recuperadati = mysql_query("SELECT * FROM utenti WHERE username = '$username' AND password = '$password'");

    $verificadati = mysql_num_rows($recuperadati);

    if($verificadati == 1){

    $sessione = mysql_fetch_array($recuperadati);
    $_SESSION['utente'] = $sessione['username'];
    echo "Login effettuato con successo!";

    else{header("Refresh: 2; URL= index.php");}
    } else {

    echo "Dati non presenti nel database!";

    }

    }

    }


    // login.php?azione=logout
    } elseif ($p == "logout"){

    session_destroy();
    echo "Logout effettuato con successo!";
    header("Refresh: 2; URL= index.php");

    }



    ?>



    </div>

    </body>
    </html>


    4-FILE index.php

    <?php

    include 'header.php';

    ?>

    <div id="wrapper">




    <?php if(isset($_SESSION['utente'])){

    echo "Benvenuto ".$_SESSION['utente']."
    ";
    echo "<a href=\"contatti.php\">[/b]
    Modulo Informazioni[/b]
    [/b]
    </a>";
    echo "Se si desidera effettuare una prenotazione cliccare sul link sottostante e attendere la conferma[/b]
    ";
    echo "<a href=\"formprenotazioni.php\">[/b]
    Prenotazioni[/b]
    [/b]
    </a>";
    echo "Se vuole puo' visualizzare lo storico delle sue prenotazioni cliccando al link seguente[/b]
    ";
    echo "<a href=\"formstorico.php\">[/b]
    Storico Prenotazioni[/b]
    [/b]
    </a>";


    $valore = date("d-m-Y");
    echo"$valore";

    } else {

    echo "Benvenuto, Registrati al Sito!
    ";
    echo "Se sei gia registrato pui effettuare il login direttamente dalla voce Accedi in alto a destra
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "</a>
    ";
    echo "Accesso per i dipendenti Sezione Privata!
    ";
    } ?>
    </p>


    </div>

    </body>
    </html>

    5-FILE contatti.php

    <?php

    include 'header.php';
    //questi li uso per recuperare la password che mi serve
    //$usx = $_SESSION['utente'];//è la username dell'utente che si è loggato
    //echo"$usx";
    ?>
    <form name="form1" method="post" action="mail.php">
    <table width="95%" align="center" >
    <tr>
    <td colspan="2"><div align="center">RICHIESTA INFORMAZIONI</div></td>
    </tr>
    <tr>
    <td>Username</td>
    <td><input type="text" name="user"></td>
    </tr>
    <tr>
    <td>Indirizzo E-mail </td>
    <td><input type="text" name="mail"></td>
    </tr>
    <tr>
    <td>Oggetto</td>
    <td><input type="text" name="oggetto"></td>
    </tr>
    <tr>
    <td>Testo</td>
    <td><textarea name="testo" cols="40" rows="10"></textarea></td>
    </tr>
    <tr>
    <td colspan="2"></td>
    </tr>
    <tr>
    <td colspan="2"><div align="center">
    <input type="submit" name="Submit" value="Invia">
    </div></td>
    </tr>
    </table>
    </form>



    E' la stessa cosa di prima, dopo del login vengo indirizzato alla pagina index.php, ma se non faccio il login posso tranquillamente,scrivendo nel browser il giusto url, arrivare alla pagina contatti.php ed invece questo non dovrebbe succedere....è l'ultimo aiuto che vi chiedo...grazie...

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Come ti dicevo, devi fare il controllo su OGNI pagina.
    Quindi su contatti.php prima di tutto verifica che l'utente è loggato ed ha il ruolo giusto
    (come avevo scritto per paginaamministratore.php)

    Già che ci sei ti conviene scrivere una funzione/classe che ti gestisce l'autenticazione.

    @sitodue
    Stando a quanto scritto su php.net hai ragione
    Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include, or require, functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.
    Ma stranamente non mi da errori

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    19

    risposta

    in che senso non ti da errori???Potresti farmi vedere negli ultimi file come fare il controllo per l'autorizzazione ??

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420
    Originariamente inviato da boots
    @sitodue
    Stando a quanto scritto su php.net hai ragione


    Ma stranamente non mi da errori
    Ti dico la verità, non ci capisco più nulla perchè per me la sequenza che hai scritto è logicissima e corretta e del codice che ho io molto simile (quello che mi hai aiutato a scrivere sempre tu utilizzando PDO), funziona correttamente e senza errori (almeno in locale); poi la consiglio ad altro utente come in questa discussione: http://forum.html.it/forum/showthrea...=&pagenumber=2 e iniziano a venir fuori tutti gli errori sull'output, l'invio degli header, la funzione ob_start e la configurazione del php.ini...
    Il problema è che ognuno dice una cosa diversa e non si sa qual'è il metodo corretto...
    Senza contare che onestamente mi sembra un controsenso fare un redirect prima del relativo echo di avviso...

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    19

    risposta

    io provando il mio codice pur non facendo il login riesco a raggiungere la pagina contatti...non so dove sto sbagliando...

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    19

    risolto

    ho risolto,basta fare in ogni file il seguente controllo:
    if(isset($_SESSION['utente'])){fai quello che l'utente loggato può fare
    }altrimenti{indirizzati alla pagina di login}

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.