Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    165

    [PHP/MYSQL] Login con ricordo utente

    Salve, ho questo codice che fa un login normale,
    Mi dite come posso fare il checkbox di ricordare l'utente connesso?

    questa è la pagina index.php
    Codice PHP:
    <?php
    session_start
    ();
    require_once(
    dirname(__FILE__) . '/../inc.php');
    if(isset(
    $_POST["submit"]))
    {


    if(
    $_POST["Email"]!="" && $_POST["password"]!="")
        {
            
           
           
        
    $query "SELECT * FROM users WHERE Email='".mysql_codifica($_POST["Email"])."' AND password='".mysql_codifica($_POST["password"])."'";
        
    $result $db->query($query);
        
        
        if ( 
    mysql_num_rows($db->query($query)) == )
        {
         
    $row mysql_fetch_assoc ($db->query($query));
          
          if(
    $row["Active"] == 0)
          {
          
    $error "Da attivare";
          }
          elseif ( 
    $row["Active"] == )
            {
                
    $_SESSION["userid"] = $row["id"];
                
    $_SESSION["Name"] = $row["Username"];
                
    $_SESSION["_Group"] = $row["_Group"];
                
    $_SESSION["loggedin"] = true;
                
                
    $query_update_dateTime"UPDATE users SET SignUpDate = NOW() WHERE id=".$_SESSION["userid"]."";
                
    $result $db->query($query_update_dateTime);
                            
                
    $query_insert_online "INSERT INTO users_online (UserID,Name)VALUES(".$_SESSION["userid"].",'".$_SESSION["Name"]."')";
                
    $result $db->query($query_insert_online);
                
                
    redirect("home/",1);
            }    elseif ( 
    $row['Active'] == ) {
                        
    $error "Confermare l'attivazione di conferma account";
                    }
                    elseif ( 
    $row['Active'] == ) {
                        
    $error 'Account sospeso';
                    }
            else {        
            
    $error 'Acesso falito!';        
            }
                
            }else
            {
            
    $error "Non esistono dati inseriti";
            }
            
    $db->close();
        }  
        
        else 
        {
        
    $error" username e password, sbagliati. Riprovare!";
        }
        
    }

    ?>
    <div align="center">
    <?php    if ( isset ( $error ) )    { echo '            <p style="error">' $error '</p>' "\n";    }    ?>
    <?php    
    if ( isset ( $msg ) )    { echo '            <p class="msg">' $msg '</p>' "\n";    } else {//if we have a mesage we don't need this form again.?>
        <form id="form" method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
    <table align="center" width="500px;">
    <tr>
        <td>Email</td>
        <td><input type="text" name="Email"  value='<?php if(isset($_POST['Email'])){echo $_POST['Email'];}?>' /></td>
    </tr>
    <tr>
        <td>Pasword</td>
        <td><input type="password" name="password" value='<?php if(isset($_POST['password'])){echo $_POST['password'];}?>' /></td>
    </tr>
    <tr>
        <td></td>
        <td><input type="hidden" name="loginUpdate" value='<?php echo date("Y-m-d H:i:s"); ?>' readonly /></td>
    </tr>
    </table>
    <div align="center">
    <input class="submit" type="submit" name='submit' value="Submit" />
    </form>
    </div>
    </div>
    <?php ?>
    e questa e quella privata:
    Codice PHP:
    <?php
    session_start
    ();
    require_once(
    dirname(__FILE__) . '/../../inc.php');


    $loggedin $_SESSION["loggedin"];
    if(
    $loggedin==true || $_SESSION["_Group"] == "10" || $_SESSION["_Group"] == "5")
    {    
    require_once(
    dirname(__FILE__) . '/../../template/admin/header.php'); 

    ?><?php require_once(dirname(__FILE__) . '/../../template/admin/footer.php'); 

    }
    else
    { echo 
    "Non hai i peremssi - attendere il redirect ";
      
    redirect("../../admin/",2); }
    ?>
    Mi date una mano?

    Non so che cosa cercare perchè trovo sempre esempi che non funzionano.

    Vi ringrazio molto.

    Buona serata.

  2. #2
    Per far rimanere loggato l'utente devi usare i cookie.
    Le sessioni si chiudono alla chiusura del browser.

  3. #3
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    165
    Originariamente inviato da fermat
    Per far rimanere loggato l'utente devi usare i cookie.
    Le sessioni si chiudono alla chiusura del browser.
    si lo so , ma ho visto in giro che usano setcookie , solo che provo ad fare i login ed esco dal browser ed rientro e l'utente non rimane connesso .

    Mi dici come usarlo con il mio codice?

    grazie mille.

  4. #4
    posta il codice che hai fatto te, cos' magari uno riesce ad aiutarti meglio.

  5. #5
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    165
    ciao, io ho fatto cosi litigando un po con google perché non mi trovava nulla di funzionante.

    Codice PHP:
    <?php
    session_start
    ();
    require_once(
    dirname(__FILE__) . '/../inc.php');
    if(isset(
    $_POST["submit"]))
    {


    if(
    $_POST["Email"]!="" && $_POST["password"]!="")

    {
            
           
           
        
    $query "SELECT * FROM users WHERE Email='".mysql_codifica($_POST["Email"])."' AND password='".mysql_codifica($_POST["password"])."'";
        
    $result $db->query($query);
        
        
        if ( 
    mysql_num_rows($db->query($query)) == )
        {
         
    $row mysql_fetch_assoc ($db->query($query));
          
          if(
    $row["Active"] == 0)
          {
          
    $error "Da attivare";
          }
          elseif ( 
    $row["Active"] == )
            {
    // QUI C'è il ricordami ...
                  
    $_SESSION['user_id']= $row["id"];  
                  
                   if(isset(
    $_POST['remember'])){
                      
    setcookie("user_id"$_SESSION['user_id'], time()+60*60*24*10"/");
                    
                       }
                
                
                
    $query_update_dateTime"UPDATE users SET SignUpDate = NOW() WHERE id=".$_SESSION["user_id"]."";
                
    $result $db->query($query_update_dateTime);
                            
                
    $query_insert_online "INSERT INTO users_online (UserID,Name)VALUES(".$_SESSION["user_id"].",'".$_SESSION["Name"]."')";
                
    $result $db->query($query_insert_online);
                
                
    redirect("home/",1);
            }    elseif ( 
    $row['Active'] == ) {
                        
    $error "Confermare l'attivazione di conferma account";
                    }
                    elseif ( 
    $row['Active'] == ) {
                        
    $error 'Account sospeso';
                    }
            else {        
            
    $error 'Acesso falito!';        
            }
                
            }else
            {
            
    $error "Non esistono dati inseriti";
            }
            
    $db->close();
        }  
        
        else 
        {
        
    $error" username e password, sbagliati. Riprovare!";
        }
        
    }

    ?>
    <div align="center">
    <?php    if ( isset ( $error ) )    { echo '            <p style="error">' $error '</p>' "\n";    }    ?>
    <?php    
    if ( isset ( $msg ) )    { echo '            <p class="msg">' $msg '</p>' "\n";    } else {//if we have a mesage we don't need this form again.?>
        <form id="form" method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
    <table align="center" width="500px;">
    <tr>
        <td>Email</td>
        <td><input type="text" name="Email"  value='<?php if(isset($_POST['Email'])){echo $_POST['Email'];}?>' /></td>
    </tr>
    <tr>
        <td>Pasword</td>
        <td><input type="password" name="password" value='<?php if(isset($_POST['password'])){echo $_POST['password'];}?>' /></td>
    </tr>  <tr> 
                <td colspan="2">
                    <input name="remember" type="checkbox" id="remember" value="1" />
                    Remember me</td>
              </tr>
    <tr>
        <td></td>
        <td><input type="hidden" name="loginUpdate" value='<?php echo date("Y-m-d H:i:s"); ?>' readonly /></td>
    </tr>
    </table>
    <div align="center">
    <input class="submit" type="submit" name='submit' value="Submit" />
    </form>
    </div>
    </div>
    <?php ?>
    Ma come devo fare per la pagina privata e il logout?

  6. #6

  7. #7
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    165
    Originariamente inviato da fermat
    dai un'occhiata qua: http://php.html.it/articoli/leggi/32...ookie-con-php/
    scusa, ma allora a che servono le sessioni se c'è da utilizzare i cookie?

    Me lo spieghi?

    grazie mille.
    Buona giornata.

  8. #8
    sono due cose differenti che possono anche essere usati insieme.
    con le sessioni puoi anche fare altre cose oltre al login.
    puoi ad esempio memorizzare delle variabili da usare nelle varie pagine, che però vuoi eliminare al momento della chiusura del browser o del logout.
    inoltre nn tutti impostano i cookie e quindi c'è sempre il rischio di nn poter fare il login.
    c'è anche una questione di sicurezza: la mia banca usa le sessioni così sei sicuro fai il logout alla chiusura del borwser.

    in fase di scelta bisogna tenere in considerazioni vari scenari.
    in genere si usano entrambi.

  9. #9
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    165
    Originariamente inviato da fermat
    sono due cose differenti che possono anche essere usati insieme.
    con le sessioni puoi anche fare altre cose oltre al login.
    puoi ad esempio memorizzare delle variabili da usare nelle varie pagine, che però vuoi eliminare al momento della chiusura del browser o del logout.
    inoltre nn tutti impostano i cookie e quindi c'è sempre il rischio di nn poter fare il login.
    c'è anche una questione di sicurezza: la mia banca usa le sessioni così sei sicuro fai il logout alla chiusura del borwser.

    in fase di scelta bisogna tenere in considerazioni vari scenari.
    in genere si usano entrambi.
    Cosa posso mettere nelle sessioni?

    Io ho provato quell'esempio che mi hai dato.

    questa e la funzione:
    Codice PHP:
    function SettaCoockie($ID_UTENTE$TEMPO)
            {
                
    setcookie('LOGIN'$ID_UTENTEtime()+$TEMPO);    //IDENTIFICATIVO DELL'UTENTE
            

    e questo il pezzo di login:
    Codice PHP:
    else if(@$_GET["act"]    ==    "login")
            {
                        
    $codPassword    =    md5($_POST["password"]);
                        
    $Sql        =    "SELECT * FROM `utenti` WHERE `username`='".@$_POST["username"]."' AND `password`='".$codPassword."' AND `stato`='1';";
                        
    $Query        =    mysql_query($Sql);
                        if(
    mysql_num_rows($Query) == 1)
                            {
                                
    $Dati        =    mysql_fetch_array($Query);
                                
                                if(@
    $_POST["ricorda"]    ==    1)
                                    
    $TempoDiValidita    =    2592000;
                                else
                                    
    $TempoDiValidita    =    72000;
                                
                                
    SettaCoockie($Dati["codUtente"], $TempoDiValidita);
                                
                                
    header('Location: home.php');
                            }
                        else
                            {
                                
    header('Location: index.php');
                            }
            } 
    Posso usare questo codice solo per settare il cookie
    e poi per le sessioni come faccio?

    Perché come mi hai detto le sessioni scadono quando si chiude il browser.
    Quindi cosa è meglio recuperare con i cookie?

    grazie mille.

  10. #10
    questo è il mio login con sessioni:
    Codice PHP:
    <?php
    if ($_SERVER['REQUEST_METHOD'] == "POST") {
        
    $utente_loggato $user;
        try {
            
    $query $config->getPdo()->prepare("SELECT * FROM user WHERE user_name='" trim(sha1($_POST['username'])) . "' AND user_pass='" trim(sha1($_POST['password'])) . "'");
            
    $query->execute();
            if (
    $query->rowCount() == 1) {
                
    $_SESSION['login'] = TRUE;
                
    $_SESSION['utente'] = $utente_loggato;
                
    header('location:[url]http://localhost/book/index.php[/url]');
                return 
    TRUE;
            } else {
                return 
    FALSE;
            }
        } catch (
    PDOException $e) {
            
    $error $e->getMessage() . "
    "
    ;
            return 
    $error;
            die();
        }
    }
    in pratica se la query trova una corrispondenza nel db allora setta due variabili di sessioni con $_SESSION.
    queste variabili possono essere usate dove vuoi.
    ad esempio per verificare che il login è stato fatto.
    inoltre memorizzo il nome utente così magari posso stamparlo dove voglio.

    cosa è meglio mettere nn ti so dire.
    nei cookie andrebbe messo quello che c'è nell'esempio in modo da ricordare l'utente (ricordati di mettere una funzione di cancellazione del cookie nel logout).
    nella sessione puoi mettere quello che vuoi, dipende da quello che vuoi/devi farci.

    onestamente nn saprei come consigliarti di gestire la cosa perchè io fino a oggi ho fatto solo login con sessioni in quanto nn ho mai avuto la necessità di usare cookie.
    ragionandoci sopra penso tu debba usare o cookie per memorizzare il minimo indispensabile per fare una cosa del genere: quando l'utente va sulla pagina controllo se il cookie c'è, e se c'è fai come se fosse loggato.
    ma è solo una supposizione.

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.