Visualizzazione risultati 1 fino 7 di 7

Discussione: Auto login

  1. #1
    raimaker non è connesso Utente giovane
    Data registrazione
    25-09-2011
    Messaggi
    94

    Predefinito Auto login

    Salve , ho visto diversi script per la gestione del login con funzione ricorda,

    nelle mie pagine riservate attualmente uso le session
    creo la session
    Codice PHP:
    session_start();
    $_SESSION['username'] = $myusername;
    e nelle pagine riservate effettuo il controllo
    Codice PHP:
    <?php
    session_start
    ();
    $myusername = $_SESSION['username'];

    if(empty(
    $myusername)) {

    echo
    "<center>Effettua il login <br><br>";
    echo
    "<a href='login.php'>Torna indietro</a>";

    }
    else
    {

    contenuto pagina riservata

    ?>
    Leggendo alcuni script ho visto che si devono utilizzare i cookie,
    Questa funzione si può integrare allo script sopra citato o sostituire le session con i cookie ?
    In caso affermativo come integrare lo script gestione cookie ?

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Personalmente, queste righe:

    Codice PHP:
    $myusername = $_SESSION['username'];

    if(empty(
    $myusername)) {
    Le sostituirei con:

    Codice PHP:
    if(!isset($_SESSION['username']))
    {
    ..Comunque, puoi utilizzare i cookie: salvi la password (criptata ovviamente) e il nick. Se l'if sopra fallisce, controlla se i cookie sono settati. In caso affermativo, controlli i dati salvati nei cookie, e se son corretti procedi con il login.

    Solo una raccomandazione: ricorda che l'utente può modificare/leggere il contenuto dei cookie, quindi quei dati trattali come se provenissero da un <form>. Inoltre, non salvare la password in chiaro perché, visto che è visibile, un utente che usa la stessa macchina potrebbe rubare la password, guardando i cookie.

    Ciao!

  3. #3
    raimaker non è connesso Utente giovane
    Data registrazione
    25-09-2011
    Messaggi
    94

    Predefinito

    Ciao alemoppo,
    allora ho fatto così

    Codice PHP:
    $myusername = mysql_real_escape_string($_POST['myusername']);
    $pass = mysql_real_escape_string(md5($_POST['mypassword']));
    $ricorda = mysql_real_escape_string($_POST['ricorda']); //controllo autologin

    $cercautente = "SELECT * FROM utenti WHERE username = '$myusername' and password = '$pass' and reg='1'";
    $query_result = mysql_query($cercautente)or die ("Database non trovato: " . mysql_error());
    $esito = mysql_num_rows($query_result);

    if (
    $esito == 1 ){

    if (
    $ricorda == "ON"){

    session_start();
    $_SESSION['username'] = $myusername;
    $_SESSION['password'] = $pass;

    setcookie("coku", "$myusername", time()+3600);
    setcookie("cokp","$pass", time()+3600);
    }

    header("Location: paginariservata.php");

    }

    else {
    nella pagina riservata invece sto facendo confusione a rilevare i dati
    infatti non appare niente

    Codice PHP:
    session_start();
    if(!isset(
    $_SESSION['username']))
    if(!isset(
    $_SESSION['password']))

    //controllo user e passwd da cookie
    if(IsSet($_COOKIE['coku']))
    if(IsSet(
    $_COOKIE['cokp']))
    {
    $coku=$_COOKIE['coku'];
    $coku=$_COOKIE['cokp'];

    $_SESSION['username']=$coku;
    $_SESSION['password']=$cokp;

    if(!isset(
    $_SESSION['username']))
    if(!isset(
    $_SESSION['password']))

    echo
    "<p align='center'><font color='#FF0000' size='5'>Effettua il login <br><br>";
    //echo "<a href='login.php' onclick='history.go(-1);return false;'>Torna indietro</a>";
    echo "<a href='login.php'>Torna indietro</a>";

    }

    else
    {
    pagina riservata
    per il logout
    ho fatto questo
    Codice PHP:
    <?php
    session_start
    ();
    session_destroy();
    setcookie("coku","",time()-3600);
    setcookie("cokp","",time()-3600);
    header("Location: home.php");
    ?>
    EDIT:

    Ho fatto una pagina di verifica e ho notato che non legge il cookie,
    però è presente nel pc.
    Codice PHP:
    if (isset($_COOKIE["coku"]))
    echo
    "Il cookie username: " . $_COOKIE["coku"]."<br>" ;
    else
    echo
    "Il cookie non è stato impostato";
    Ultima modifica di alemoppo : 19-11-2011 alle ore 14.30.11 Motivo: Non fare post consecutivi: usa il tasto "Edita" per editare i messaggi

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Il sorgente che hai scritto sembra (sintatticamente) corretto.


    Tra:
    Codice PHP:
    $coku=$_COOKIE['coku'];
    $coku=$_COOKIE['cokp'];
    e
    Codice PHP:
    $_SESSION['username']=$coku;
    $_SESSION['password']=$cokp;
    [/PHP]
    Dovresti prima controllare se i dati provenienti dai cookie siano corretti.... Se io impostassi nel cookie un nick mio, e una password inventata, il tuo script come si accorge?
    Cioè, è un po come se in un login facessi:

    Codice PHP:
    session_start();
    $_SESSION['username'] = $_POST['user'];
    $_SESSION['password'] = $_POST['pass'];
    Tralasciando la verifica nel database.

    L'ultimo sorgente (di verifica), lo fai eseguire comunque da una pagina su altervista?
    Come fai a capire che
    però è presente nel pc.
    ?


    -------

    Infine, io questo:
    Codice PHP:
    if ( $ricorda == "ON"){

    session_start();
    $_SESSION['username'] = $myusername;
    $_SESSION['password'] = $pass;

    setcookie("coku", "$myusername", time()+3600);
    setcookie("cokp","$pass", time()+3600);
    }
    Lo sostituirei con:
    Codice PHP:
    session_start();
    $_SESSION['username'] = $myusername;
    $_SESSION['password'] = $pass;
    if (
    $ricorda == "ON"){
    setcookie("coku", "$myusername", time()+3600);
    setcookie("cokp","$pass", time()+3600);
    }
    Ovvero: anche se l'utente non vuol "ricordarsi", comunque vuole fare il login!


    Ciao!

  5. #5
    raimaker non è connesso Utente giovane
    Data registrazione
    25-09-2011
    Messaggi
    94

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Il sorgente che hai scritto sembra (sintatticamente) corretto.


    Tra:
    Codice PHP:
    $coku=$_COOKIE['coku'];
    $coku=$_COOKIE['cokp'];
    e
    Codice PHP:
    $_SESSION['username']=$coku;
    $_SESSION['password']=$cokp;
    [/PHP]
    Dovresti prima controllare se i dati provenienti dai cookie siano corretti.... Se io impostassi nel cookie un nick mio, e una password inventata, il tuo script come si accorge?
    Controllo i dati nel database,


    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    L'ultimo sorgente (di verifica), lo fai eseguire comunque da una pagina su altervista?
    Come fai a capire che ?
    se vado nel browser e cerco il cookie lo trovo

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Infine, io questo:
    Codice PHP:
    if ( $ricorda == "ON"){

    session_start();
    $_SESSION['username'] = $myusername;
    $_SESSION['password'] = $pass;

    setcookie("coku", "$myusername", time()+3600);
    setcookie("cokp","$pass", time()+3600);
    }
    Lo sostituirei con:
    Codice PHP:
    session_start();
    $_SESSION['username'] = $myusername;
    $_SESSION['password'] = $pass;
    if (
    $ricorda == "ON"){
    setcookie("coku", "$myusername", time()+3600);
    setcookie("cokp","$pass", time()+3600);
    }
    Ovvero: anche se l'utente non vuol "ricordarsi", comunque vuole fare il login!


    Ciao!
    infatti ho provveduto a modificarlo dopo aver mandato il post .
    Dalle prove avevo riscontrato che se non inserivo l' apice non si loggava.


    ho modificato lo script in questo modo
    Codice PHP:
    if ( $esito == 1 ){
    session_start();
    $_SESSION['username'] = $myusername;
    $_SESSION['password'] = $pass;

    if (
    $ricorda == "ON"){
    $cok = $myusername."|".$pass;
    setcookie("coku",$cok,time()+3600,"/");
    pagina riservata

    Codice PHP:
    session_start();
    //verifico se esiste il cookie

    $cookie = $_COOKIE["coku"];
    echo
    $cookie."<br>";
    $value=explode("|",$cookie);
    $username =$value[0];
    $password =$value[1];
    $_SESSION['username'] = $username ;
    $_SESSION['password'] = $password ;

    $username = $_SESSION['username'];
    $password = $_SESSION['password'];
    if(empty(
    $username)) {

    echo
    "<p align='center'><font color='#FF0000' size='5'>Effettua il login <br><br>";
    //echo "<a href='login.php' onclick='history.go(-1);return false;'>Torna indietro</a>";
    echo "<a href='login.php'>Torna indietro</a>";

    }

    else
    {
    corpo pagina riservata
    }
    funziona con il cookie ma non funziona con la session ,
    dove ho sbagliato ?
    Grazie
    Ultima modifica di raimaker : 19-11-2011 alle ore 16.11.02

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Codice PHP:
    $cookie = $_COOKIE["coku"];
    echo
    $cookie."<br>";
    $value=explode("|",$cookie);
    $username =$value[0];
    $password =$value[1];
    $_SESSION['username'] = $username ;
    $_SESSION['password'] = $password ;
    Esempio: se io vengo nel tuo sito ed imposto il valore del cookie con "admin|blablabla", io risulterei loggato! Come ti ho detto prima, da cooke prima di assegnare alle sessioni, dovresti controllare se i dati sono corretti.
    -----
    Questo non l'ho capito:
    Codice PHP:
    $_SESSION['username'] = $username ;
    $_SESSION['password'] = $password ;

    $username = $_SESSION['username'];
    $password = $_SESSION['password'];
    ----------

    Se i cookie esistono, è strano che:
    Codice PHP:
    if (isset($_COOKIE["coku"]))
    echo
    "Il cookie username: " . $_COOKIE["coku"]."<br>" ;
    else
    echo
    "Il cookie non è stato impostato";
    Non li veda...

    -----

    Per il login, molto probabilmente $esito non vale 1. Prova a fare echo $esito; per vedere se vale 1.... Altrimenti, riposta qui tutto il sorgente della pagina: a pezzi è difficile vedere cosa non va...

    Ciao!

  7. #7
    raimaker non è connesso Utente giovane
    Data registrazione
    25-09-2011
    Messaggi
    94

    Predefinito

    PAGINA LOGIN
    Codice PHP:
    <?php

    session_start
    ();
    $myusername = $_SESSION['username'];

    if(empty(
    $myusername)) {

    $myusername= "Anonimo";

    }
    ?>

    <table border="1" width="20%" id="table9">
    <tr>
    <td>
    <form name="form1" method="post" action="check_login_ricorda.php" >
    <table border="0" width="193" id="table10">
    <tr>
    <td width="142">
    Ciao <font color="#008000"><b><?php echo $myusername ?></b></font></td>
    </tr>
    <tr>
    <td width="100%">
    <table border="0" width="99%" id="table11">
    <tr>
    <td width="115">
    <a href="registrazione.php">Registrati </a></td>
    <td width="111">
    <p align="right"><a href="logout.php">Logout</a></td>
    </tr>
    </table></td>
    </tr>
    <tr>
    <td width="183">
    <table border="0" width="100%" id="table12">
    <tr>
    <td width="227">
    Username
    <input name="myusername" type="text" id="myusername" value="" size="32"></td>
    </tr>
    </table></td>
    </tr>
    <tr>
    <td width="227" >
    Password
    <input name="mypassword" type="password" id="mypassword" value="" size="32"></td>
    </tr>
    <tr>
    <td width="183">
    <input type="checkbox" name="ricorda" value="ON"> Ricorda</td>
    </tr>
    <tr>
    <td width="183">
    <p align="center"><input type="submit" name="Submit" value="Invia" >

    </td>
    </tr>
    <tr>
    <td width="100%">
    <table border="0" width="99%" id="table14">
    <tr>
    <td align="left" width="100%">
    <p align="center"><a href="recupera_psw.php">Recupera la password</a> <br>
    <a href="cambio_password.php">Modifica password</a></td>
    </tr>
    </table></td>
    </tr>
    </table>
    </form>
    </td>
    </tr>
    </table>

    Pagina CONTROLLO ( check_login_ricorda.php )
    Codice PHP:
    <?php

    $myusername
    = mysql_real_escape_string($_POST['myusername']);
    $pass = mysql_real_escape_string(md5($_POST['mypassword']));
    $ricorda = mysql_real_escape_string($_POST['ricorda']);


    require
    'config.php';
    require
    'connect.php';


    $cercautente = "SELECT * FROM utenti WHERE username = '$myusername' and password = '$pass' and reg='1'";
    $query_result = mysql_query($cercautente)or die ("Database non trovato: " . mysql_error());
    $esito = mysql_num_rows($query_result);


    if (
    $esito == 1 ){
    session_start();
    $_SESSION['username'] = $myusername;
    $_SESSION['password'] = $pass;

    if (
    $ricorda == "ON"){
    session_start();
    $cok = $myusername."|".$pass;
    setcookie("coku",$cok,time()+3600,"/");

    }

    header("Location: form_carico_dati.php");

    }

    else {
    echo
    "<p align='center'><font color='#FF0000' size='5'> Username o password errata. <br>";
    echo
    "<p align='center'><a href='javascript:history.go(-1)'>Torna Indietro</a></p>";
    }

    }


    ?>
    pagina carico dati

    Codice PHP:
    <?php

    session_start
    ();
    //verifico se esiste il cookie
    $cookie = $_COOKIE["coku"];
    echo
    $cookie."<br>";
    $value=explode("|",$cookie);
    $username =$value[0];
    $password =$value[1];

    $username = $_SESSION['username'];
    $password = $_SESSION['password'];
    if(empty(
    $username)) {


    echo
    "<p align='center'><font color='#FF0000' size='5'>Effettua il login <br><br>";

    echo
    "<a href='login.php'>Torna indietro</a>";

    }

    else
    {

    require
    'config.php';
    require
    'connect.php';


    $sqlquery = "SELECT * FROM utenti WHERE username = '$username' and password = '$password' and reg='1'";
    $result = mysql_query($sqlquery);
    $number = mysql_numrows($result);

    $i = 0;

    if (
    $number < 1) {
    print
    "<center><p>La ricerca non ha prodotto nessun risultato</p></center>"; }
    else {

    while (
    $number > $i) {
    $IDStazione=mysql_result($result,$i,"IDStazione");
    $username = mysql_result($result,$i,"username");


    ?>


    <html>

    <head>
    <title></title>


    </head>

    <body bgcolor="#999999">

    <p align="center">


    <p align="center">
    &nbsp;</p>




    <table border="0" width="100%" cellspacing="0" cellpadding="0">
    <tr>
    <td width="98%" valign="top">

    <p align="center">&nbsp;
    <form name='form_ins' action='insert_dati.php' method='post' >

    <table border="0" width="100%" id="table1">
    <tr>
    <td align="center">
    <table border="1" width="356" id="table2">
    <tr>
    <td width="346">



    <table border="0" width="99%" cellspacing="0" cellpadding="0" height="193" id="table3">
    <tr>
    <td width="76%" align="center" colspan="3">
    </td>
    </tr>
    <tr>
    <td width="66%" colspan="2"> <b><font color="#000080">&nbsp;&nbsp;
    <font size="4">Utente: </font>&nbsp;</font></b><span style="background-color: #FFFFFF">&nbsp;&nbsp;&nbsp;<font color="#008000"><b> <?php echo $username ?>&nbsp;</b></font>&nbsp; </span><font color="#FFFFFF"><span style="background-color: #FFFFFF">
    <input type="hidden" name='UTENTE' size="24" maxlength="20" value="<?echo $username ?>" ></span></font>
    </td>
    <td width="34%"> <b>
    <font color="#000080" size="4">ID Utente:&nbsp;</font><font color="#000080">&nbsp;</font></b><span style="background-color: #FFFFFF">&nbsp;&nbsp;&nbsp;<font color="#008000"><b> <?php echo $IDStazione ?>&nbsp;</b></font>&nbsp; </span> </td>
    <input type="hidden" name='IDStazione' size="24" maxlength="20" value="<?echo $IDStazione ?>" ></span></font>
    </tr>
    <tr>
    <td width="76%" colspan="3">
    </td>
    </tr>
    <tr>
    <td width="76%" height="19" align="center" colspan="3" bgcolor="#C0C0C0">
    &nbsp;</td>
    </tr>
    <tr>
    <td width="35%" height="99" align="center" bgcolor="#6699FF">
    <p align="center">
    <font color="#000080"><b>prova1</b></font><b><font color="#000080"><br></font></b>
    <input type='text' name='prova1' size="5" maxlength="5" >

    </p>
    </td>
    <td width="30%" height="99" align="center" bgcolor="#6699FF">
    <b><font color="#000080">prova2:<br></font></b>&nbsp;&nbsp;
    <input type='text' name='prova2' size="2" maxlength="2" >
    </td>
    <td width="34%" height="99" align="center" bgcolor="#6699FF">
    <b><font color="#000080">Prova3&nbsp;&nbsp;&nbsp;&nbsp; <br></font></b>
    <input type='text' name='prova3' size="6" maxlength="6" > </td>
    </tr>
    </table>
    </td>
    </tr>
    </table>
    </td>
    </tr>
    </table>



    <p align="center">
    <input type='submit' value='Invia modulo' /></form></p>


    <table border="0" width="100%" cellspacing="0" cellpadding="0">
    <tr>
    <td width="100%"></td>
    </tr>
    </table>



    </td>
    </tr>
    </table>



    </body>
    </html>

    <?php
    $i
    ++; }}
    }
    ?>
    sia per la pagina di login che per la pagina carico dati mi dai una mano a modificarle al fine di funzionare sia con le sessioni ( nel caso qualcuno non vuole l' autologin ) e con i cookie.
    grazie in anticipo per la collaborazione
    Ultima modifica di raimaker : 19-11-2011 alle ore 21.09.05

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •