Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: sessione su login

  1. #1

    sessione su login

    ciao a tutti
    ho appena provato a scrivere un codice di login... funziona (stranamente), e dovrei assegnare delle variabili di sessione, perche in alcune pagine deve esserci l'accesso riservato ai soli utenti registrati! non conoscendo per niente le variabili di sessione, come posso fare ad ad assegnarle? ho letto il tutorial, ho provato ma non va tanto bene perche ci sono errori
    se poteta aiutarmi vi scrivo il codice



    controllini vari prima poi
    include ('conf.inc.php");
    $query="SELECT username, password FROM utenti ";
    $username=$_POST['username'];
    $password=$_POST['password'];
    $query.="WHERE username='$username';";
    $risultato = mysql_query($query)
    or die("query non riuscita: ".mysql_error());
    $num_righe = mysql_num_rows($risultato);
    if ($num_righe==1)
    {
    while($righe=mysql_fetch_array($risultato,MYSQL_AS SOC))
    {
    if($_POST['password']==$righe['password'])
    {
    echo "utente riconoscuto
    ";
    echo "Entra!";

    QUI BISOGNEREBBE ASSEGNARE LA VARIABILE

    }
    else
    {
    echo "utente non valido";
    echo " Riprova
    ";
    echo " Indietro alla home
    ";
    echo "Hai sbagliato la password, cliccaqui e riprova!";
    }




    io ho provato, per quanto capito a fare:
    $_SESSION['id'] = $username;


    e nella pagina protetta:

    <?php
    session_start();
    if (!empty($_SESSION['id']))
    {
    echo("Non sei autenticato!");
    }
    else
    {
    echo "bene bene";
    }
    ?>




    QUALCUNO HA SOLUZIONI MIGLIORI??

    GRAZIE CIAO CIAO

  2. #2
    Innanzitutto tutto questo:

    $query="SELECT username, password FROM utenti ";
    $username=$_POST['username'];
    $password=$_POST['password'];
    $query.="WHERE username='$username';";
    $risultato = mysql_query($query)
    or die("query non riuscita: ".mysql_error());
    $num_righe = mysql_num_rows($risultato);
    if ($num_righe==1)
    {
    while($righe=mysql_fetch_array($risultato,MYSQL_AS SOC))
    {
    if($_POST['password']==$righe['password'])
    {
    echo "utente riconoscuto
    ";
    echo "Entra!";

    QUI BISOGNEREBBE ASSEGNARE LA VARIABILE

    }
    else
    {
    echo "utente non valido";
    echo " Riprova
    ";
    echo " Indietro alla home
    ";
    echo "Hai sbagliato la password, cliccaqui e riprova!";
    }


    potrebbe essere così semplificato:

    $username=$_POST['username'];
    $password=$_POST['password'];

    $query = "SELECT username FROM utenti
    WHERE username='$username' and BINARY password='$password'";

    /* Praticamente immagino che la password sia case sensitive, in tal caso BINARY
    ti fa un controllo preciso (sul codice ascii dei caratteri) tra la password nel DB
    e quella fornita nel log-in. Se, inveve non è case sensitive, allora togli l'opzione
    BINARY */

    $risultato = @mysql_query($query) or die("query non riuscita: " . @mysql_error());

    //Inoltre ti consiglio di usare @ davanti ai comandi mysql perché in tal modo a video
    //non vengono mostrate informazioni sensibili che qualcuno potrebbe carpire.

    if ($riga = @mysql_fetch_assoc($risultato))
    {
    echo "utente riconoscuto
    ";
    echo "Entra!";

    QUI BISOGNEREBBE ASSEGNARE LA VARIABILE
    }
    else
    {
    echo "utente non valido";
    echo " Riprova
    ";
    echo " Indietro alla home
    ";
    echo "Hai sbagliato la password, cliccaqui e riprova!";
    }


    Hai poi scritto:

    io ho provato, per quanto capito a fare:
    $_SESSION['id'] = $username;


    OK va bene.


    Hai scritto:

    e nella pagina protetta:

    <?php
    session_start();
    if (!empty($_SESSION['id']))
    {
    echo("Non sei autenticato!");
    }
    else
    {
    echo "bene bene";
    }
    ?>


    In realtà dovresti scrivere

    if (empty($_SESSION['id']))
    {
    echo("Non sei autenticato!");
    }
    else
    {
    echo "bene bene";
    }

    oppure

    if (!isset($_SESSION['id']))
    {
    echo("Non sei autenticato!");
    }
    else
    {
    echo "bene bene";
    }

    Anche perché se la variabile id è presente nella sessione dell'utente sicuramente conterrà il valore dello username.


    Per sicurezza, infine fai in modo di impostare nel php.ini

    register_globals = Off

    Ciao.

  3. #3
    ok grazie! e il session_start() dove devo metterlo?

  4. #4
    All'inizio di ogni pagina dove vuoi inserire la sessione.

  5. #5
    quindi nella pagina protetta doveri fare cosi giusto?

    <?php
    session_start();
    if (empty($_SESSION['id']))
    {
    echo "Non sei autenticato!";
    }
    else
    {
    echo "bene bene";
    }
    ?>

    nella pagina di login niente session_start()?

    scusate sono ancora un principiante di php, ma se faccio cosi mi da quest'errore

    Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\programmi\easyphp1-8\www\progetto_sito\index.php:15) in c:\programmi\easyphp1-8\www\progetto_sito\chisiamo.php on line 2

    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\programmi\easyphp1-8\www\progetto_sito\index.php:15) in c:\programmi\easyphp1-8\www\progetto_sito\chisiamo.php on line 2
    Non sei autenticato!

  6. #6
    ho cominciato da poco pure io.. cmq facendo così mi funziona, penso sia giusto.

    Codice PHP:
    <?php
    session_start
    ();
    if (isset(
    $_SESSION['id']))
    {
    echo(
    "Non sei autenticato!");
    }
    else
    {
    echo 
    "bene bene";
    }
    ?>

  7. #7
    ho una domanda però...
    per rimanare loggato in tutte le pagine del sito devo scrivere questo controllo in ognuna di esse?!?....
    il fatto è che se accedo per la prima volta e mi si apre la pagina index dove c'è il controllo sul login, ed ovviamente non sono loggato, non mi farebbe accedere...come risolvo questo problema?

  8. #8
    non funziona nemmeno con isset.... boh

  9. #9
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Codice PHP:
    <?php
    session_start
    ();
    if (isset(
    $_SESSION['id']))
    {
    echo(
    "Non sei autenticato!");
    session_destroy(); //  importante
    }
    else
    {
    echo 
    "bene bene";
    }
    ?>
    se cerchi di accedere ad una pagina protetta e devi definire session_start() tutte le volte, può succedere questo:

    1) se la sessione è già a perta lui la recupera e controlla i valori
    2) se la sessione NON è già aperta con session_start() ne crei una nuova.

    se accedi alla pagina protetta e non sei loggato, con il tuo codice crei tutte le volte una sessione nuova, che non è tanto bello... con session_destroy() dove te l'ho messo io distruggi la sessione appena creata (stiamo sempre parlando di un utente non loggato eh!!)

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  10. #10
    ok..quindi il session_destroy(); lo metto nelle pagine che possono visitare gli utenti loggati e non..mentre in quelle nelle quali bisogna essere per forza loggati non lo metto..giusto?
    grazie

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