Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [PHP] mal funzionamento sessioni

    Buon giorno a tutti quanti voi..

    Ho un piccolo problema con le sessioni.

    - Uso le sessioni per trasmettere info da una pagina all'altra
    - Ho una pagina di login dove inserisco nome utente e password
    - Tramite questa pagina il browser mi ridireziona ad una pagina per l'utente oppure ad una pagina per administrator e mi setta la sessione ($_session["utente"] = nome_utn inserito)

    Detto questo:

    Quando mi posiziono nella pagina di login ed inserisco i dati (nome utente e password) e poi premo il bottone logga, tutto sembra funzionare bene.

    Ma quando mi trovo o nella pagina di root oppure in quella di utente mi accorgo che la sessione non ha riportato i dati prima inseriti.

    Quindi io premo il bottone logout che mi riporta alla login.php, qui rifaccio tutto il processo e questa volta tutto funziona davvero, ossia la session trasmette i dati da me impostati da una pagina all'altra..

    Qua sotto il codice della log.php ossia, la pagina che analizza i dati inseriti, quarda se nel db esiste l'utente, setta la session, e ridireziona il broswer nella pagina che volevo:

    ------------------------------------------------------------------------------------
    <html>
    <head>
    <title>Login</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    <link rel="stylesheet" type="text/css" href="my_css.css">

    </head>

    <body>
    <table width="60%" border="0" align="center">
    <tr>
    <td><div align="center">[img]/gestore/immagini/banner.jpg[/img]</div></td>
    </tr>
    </table>



    </p>


    <?php
    include("dbconfig.php");

    //ricavo i valori della form precedente
    $nome = $_POST["nick"];
    $password = $_POST["psw"];


    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connesione");

    mysql_select_db("gestore", $db)
    or die ("Errore nella selezione del database");


    //creo la query
    $sql = "SELECT * FROM Tbl_Utente WHERE nick='$nome' and password='$password'";
    //invio tale query al db
    $result = mysql_query ($sql, $db);
    //ricavo i dati dal db
    $row = mysql_fetch_array ($result);
    //numero di riche contenente i dati
    $num = mysql_num_rows($result);

    if ($num == 0) { //cioè non c'è nessun dato all'interno del db
    //utente no trovato
    echo "
    <table width='60%' border='0' align='center'>
    <tr>
    <td><div align='center'><h2 class='title'>Modulo di Direzione</h2></div></td>
    </tr>
    </table>






    <table width='60%' border='1' align='center'>
    <tr>
    <td colspan='3'><div align='center'>
    Il nome non è presente nel database
    oppure hai sbagliato la password.

    Cosa vuoi vare?


    </td>
    </table>




    <table width='40%' border='0' align='center'>
    <tr>
    <td><div align='center'><a href='registra.php?n=$nome&p=$password'>Registra
    Utente
    </a></div></td>
    <td><div align='center'>Ritorna al Login</div></td>
    <td><div align='center'>HomePage</div></td>
    </tr>
    </table>
    ";
    }
    else
    {//utente esistente
    if ($row["diritto"] == 0)
    {//utente semplice
    mysql_close ($db);
    //provo con la session
    $_SESSION["utente"] = $nome;
    header("Location: http://192.168.100.140/gestore/usr_page.php"); // Ridireziona il browser per INTERNET
    //header("Location: http://localhost/Gestore/usr_page.php"); // Ridireziona il browser per RETE LOCALE
    exit;
    }
    else
    {//utente roo
    mysql_close ($db);
    //provo con la session
    $_SESSION["utente"] = $nome;
    header("Location: http://192.168.100.140/gestore/root_page.php"); // Ridireziona il browser PER INTERNET
    //header("Location: http://localhost/Gestore/root_page.php"); // Ridireziona il browser per RETE LOCALE
    exit;
    }
    }
    ?>


    </p>


    </p>

    <table width="60%" border="0" align="center">
    <tr>
    <td><div align="center">[img]/gestore/immagini/downpage.jpg[/img]</div></td>
    </tr>
    </table>

    </body>
    </html>
    ------------------------------------------------------------------------------------


    Grazie mille per l'aiuto e per il tempo che mi date..

    Alessandro
    Ciò che molti non capiscono è una banalità per altri..

    Siederò sulla sponda del fiume aspettando che passi il tuo cadavere.

  2. #2
    in cima ad ogni pagina nella quale intenti utilizzare le sessioni è necessaria l'istruzione session_start()
    dai un occhio qui http://it.php.net/session_start
    Planet Earth is blue and there's nothing I can do

  3. #3
    Non credo sia quello il problema, perchè ho impostato il php.ini in modo tale che le sessioni partano automaticamente ..

    Cmq ora provo a impostare anche il session_start() all'inizio di ogni pagina dove utilizzo le sessioni..


    grazie mille per la celerità nella risposta..
    grazie..

    Ciò che molti non capiscono è una banalità per altri..

    Siederò sulla sponda del fiume aspettando che passi il tuo cadavere.

  4. #4
    piu' che vedere la pagina in cui setti la variabile di sessione in $_SESSION, bisognerebbe vedere la pagina di arrivo. Se lo vedi solo dopo la seconda volta potrebbe trattarsi di una lettura della pagina da cache.

    piuttosto nel riconoscimento dello user che fai dopo la query sarei piu' prudente nell'assegnare i privilegi a root. Farei esattamente il contrario come ordine di assegnazione altrimenti se esiste lo user e non e' utente semplice diventa automaticamente root.

    Meglio fare:

    se hai privilegi da root fai il root
    altrimenti fai il normale.

    e non

    se sei normale fai il normale
    altrimenti fai root

    Qualunque valore diverso da diritto = 0 in questo caso diventerebbe root.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Ho provato entrambi i metodi (ho usato l'auto start ed anche all'inizio di ogni singola pagina session_start())

    ma non ottengo risultati..

    la prima volta che loggo non funziona, poi faccio logout e rientro e allora le sessioni partono..

    Qualcuno sa spiegarmi il perchè..

    grazie anticipatamente per l'aiuto
    Ciò che molti non capiscono è una banalità per altri..

    Siederò sulla sponda del fiume aspettando che passi il tuo cadavere.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.