Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    43

    Session & Cookie -> Login

    Ciao ragazzi,
    Ormai armeggio con il PHP da un po' di tempo e sto cercando di creare un buon sistema di login, sia con session che con cookie, per realizzare un social network. Data l'importanza del progetto, vorrei essere molto pulito e funzionale nel codice. Secondo voi così può andare?

    Login:
    Codice PHP:
    if ($act == 'login'//LOGIN - L'utente entra con il suo account privato nel sito
        
    {
        
    $user $_POST['username'];
        
    $pass $_POST['password'];
        
    $ck_ricordami $_POST['ck_ricordami'];
            
        include 
    'config.php';
        
        
    $pass_save md5($pass);
        
        
    // Mi connetto al db
        
    $db mysql_connect("$hostname_db","$username_db","$password_db") or die("Connessione non riuscita: " mysql_error());    
        
    mysql_select_db("$database_db"$db);
        
    $query "SELECT * FROM utenti WHERE user_utente = '$user' AND pass_utente = '$pass_save'";
        
    $result mysql_query($query);
        
    $row mysql_fetch_array($result);
            
        if (
    $row)
            {
            if (
    $ck_ricordami)
                {
                
    setcookie("ricordami""ricordami"time()+2592000);
                
    setcookie("user_utente""$user"time()+2592000);
                
    setcookie("id_utente"$row['id_utente'], time()+2592000);
                
                if(
    $row['grado_utente'] == '1')
                    {
    setcookie("grado_utente""1"time()+2592000);}
                
                
    mysql_close($db);
                
    header("location: index.php");
                }
            else 
                {
                
    session_start();
                
    $_SESSION['ricordami'] = 'si';
                
    $_SESSION['user_utente'] = $user;
                
    $_SESSION['id_utente'] = $row['id_utente'];
                
                if(
    $row['grado_utente'] == '1')
                    {
    $_SESSION['grado_utente'] = '1';}
                
                
    mysql_close($db);
                
    header("location: index.php");
                }
            }
        else
            {
            
    mysql_close($db);
            echo 
    "Dati non corretti.";
            }
        } 
    Inoltre, purtroppo, quando richiamo da un include l'header, non mi visualizza correttamente i dati: dove sbaglio? Allego anche questo file.

    Codice PHP:
    <?php
           session_start
    ();
           
           
    $ck_ricordami $_COOKIE['ricordami'];
           
    $session_ricordami $_SESSION['ricordami'];
          
           if (
    $ck_ricordami != 'si') {
             if (
    $session_ricordami == 'si') {
               
    $highlight == "si";
               
    $id $_SESSION['id_utente'];
               
    $user $_SESSION['user_utente'];
              
               if (
    $_SESSION['grado_utente'] == 1) {$grado 1;}
              }
            }
          else {
              
    $highlight == "si";
              
    $id $_COOKIE['id_utente'];
              
    $user $_COOKIE['user_utente'];

              if (
    $_COOKIE['grado_utente'] == 1) {$grado 1;}
              }
          if (
    $highlight == "si") {?>
          <div class="prova">
           Ciao
          </div>
          <?php
            
    } else { ?>
          <form action="setting.php?act=login" method="post">
           <div class="header-login-sx">
            Username:


            Password:
           </div>
           <div class="header-login-dx">
            <input type="text" name="username" class="input-user" />
            <input type="password" name="password" class="input-pass" />
            <input type="submit" value="Login" name="submit_login" class="submit-login">
           </div>
           <div class="header-login-bottom">
            <input type="checkbox" name="ck_ricordami"> Ricordami?
           </div>
          </form>
         <?php
          
    }
         
    ?>
    E' giusto l'if iniziale per disinguere cookies e sessions per utilizzarli poi nella pagina?

    Vi ringrazio tantissimo e aspetto con ansia le vostre risposte.
    Anche se avete arrangiamenti migliori e più efficaci sarò molto lieto di accoglierli.

    Un saluto, Andrea.

  2. #2
    Ti consiglio vivamente di aspettare pareri più autorevoli deli mio. Ti dico io cosa penso:
    1) devi assolutametne fare dei controlli maggiori sulle variabili ed in particolare con degli isset() ma non solo ad es.
    Codice PHP:
        $user = isset($_POST['username'])? trim($_POST['username']): ''
        
    // lo stesso farei per altre variabili...
        // assolutamente da farsi per i cookie 
    anche in questo altro punto:
    Codice PHP:
    // dovresti verificare l'esistenza...
    $ck_ricordami $_COOKIE['ricordami']; 
    $session_ricordami $_SESSION['ricordami']; 
    2) alcune delle condizioni degli if non mi piacciono... ad es:
    Codice PHP:
        $result mysql_query($query) or die(mysql_error()); 
        
    $num_rows mysql_num_rows($result);
        
    $row mysql_fetch_array($result); 
             
        if (
    $num_rows>=1
            {
            
    //...
            

    3) (secondo me la cosa + sbagliata) assolutamente da evitare è impostare/verificare il livello di utenza tramite il cookie...
    ti ricordo infatti che ogni utente può autoimpostarsi i cookies che vogliono!! in questo modo ogni utente potrebbe impostarsi il livello di utenza massimo
    Codice PHP:
    // secondo me è una cosa erratissima!!
    if($row['grado_utente'] == '1'
                    {
    setcookie("grado_utente""1"time()+2592000);} 
    4) dopo gli header location metti un bel exit;
    5) "stilisticamete" non mi piace... soprattutto dovresti fare una maggiore separazione fra markup (HTML) e codice lato server
    6) ti consiglierei di iniziare con progettini più semplici...

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    43
    Ti ringrazio infinitamente.

    E' vero, mi sono scordato delle cose fondamentali.
    Mi sorge, però, un dubbio. Come faccio a far ricordare i dati importanti, se non con i cookie che vengono ria-girati?

  4. #4
    se non ha i cookies attivati i sistemi di login non possono funzionare...
    anche le sessioni fanno uso di un cookie... infatti all'utente invii l'id di sessione e tramite la lettura di quel cookies puoi accedere alle "sue" variabili di sessione

    RETTIFICO:
    possono funzionare ma il SID deve essere propagato tramite variabili GET

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    43
    Quindi, praticamente, devo far passare su ogni link il l'id dell'utente?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    719
    Vabbe, puoi anche farlo in automatico con un semplice str_replace

    str_replace("<a href='miosito/pag.php'",'miosito/pag.php?SID='".$SID, $html);

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.