Visualizzazione risultati 1 fino 7 di 7

Discussione: Creare sistema login con il login automatico se si sceglie "Ricordami"

  1. #1
    Guest

    Predefinito Creare sistema login con il login automatico se si sceglie "Ricordami"

    Mi sono letto guide in lungo e in largo, in inglese e non, la realtà è che non ho capito ancora come fare un buon sistema lgin basato su sessioni, cookie e database

    Allora, ho una tabella degli user dove registro id, name, user,email e altri dati non interessati al login.

    Ora, se vado nella pagina login, ho una query che controlla i dati inseriti, se le righe affette sono 1 faccio:
    Codice PHP:
    setcookie('id', $row['user_id'], (time() + (3600 * 48))); #Così dura due giorni
    Poi faccio anche:
    Codice PHP:
    $_SESSION['user_id'] = $row['user_id'];
    Però non ho capito il fatto del PHPESSID, come posso fare epr tenerlo ed utilizzare quello, poi alla scadenza del login cambiare sessione?

    Non ho trovato una guida decente altrimenti mi sarie fatto tutto da solo.

    Poi non mi consigliate dev.login o cose simili, voglio cercare di fare tutto il sistema io senza usare un prefatto

  2. #2
    Guest

    Predefinito

    Differenziamo intanto le due cose:
    Session e Cookie

    Le session risiedono sul server e li puoi prelevare con la variabile $_SESSION, ogni qualvolta visiti un sito viene generato un SESSION ID, ovvero una sorta di codice (chiamalo come vuoi) che dice che sei tu.
    I cookie risiedono invece nel computer dell'utente e sono prelevabili attraverso la variabile $_COOKIE, ricorda che i cookie sono alterabili.

    Ma perché sono stati introdotti i COOKIE? non bastavano le session, il titolo del tuo topic risponde a questa domanda.
    Mentre una session è legata al SESSION ID, un cookie non è legato a nulla, sta lì nel tuo computer e conserva le informazioni per quel dominio fino a quando il cookie stesso.

    Ne deriva che, se tu chiudi il tuo browser il SESSION ID non puoi più riprenderlo, quindi l'eventuale login attraverso le session scade.

    Piccola nota: i cookie a scadenza di chiusura browser vengono chiamati cookie di sessione.

    A questo punto fatta chiarezza sul tutto puoi sviluppare il tuo sistema di login.

    Fai attenzione quando sviluppi i sistemi di login, e non lasciare mai dati sensibili dentro i cookie.

  3. #3
    Guest

    Predefinito

    Questo lo sapevo svacant, però il mio problema sta proprio nel costruire il sistema di login.

    Mi sono studiato alcuni CMS e te li cito:
    phpbb2
    phpbb3
    Icy Phoenix
    punbb
    deforum

    poi altri tutorial per la rete.

    I primi 3 salvano un cookie e poi generano un array con tutti i dati dell'utente visitante, dfacendo un unserialize() dei cookie e prendendo dati dal DB.

    I restanti non ho capito come fanno, nel deforum ho visto che salva dei cookie.

    Il mio problema è nel far comunicare le cose come il PHPESSID e poter fare degli switch in base all'utente se è loggato o meno.

  4. #4
    Guest

    Predefinito

    Beh potresti tenere dentro un cookie l'hash md5 di alcune variabili dell'utente.

    Esempio :

    hash = username+last_login+email

    Salvi nel cookie ed ogni volta che l'utente torna, fai la verifica, lo fai loggare in automatico e riscrivi il cookie.

  5. #5
    Guest

    Predefinito

    Ma se ho l'hash in md5, come posso fare poi per riprenderli? Devo fare un controllo sempre usando md5()?

    L'unico mio problema è mantenere la sessione aperta per un certo tanto di tepo, così salverei nei cookie solamente password, username e sid, in modo che quando apre la pagina sia ancora collegato.

  6. #6
    Guest

    Predefinito

    Fai l'hash md5 e lo memorizzi nel cookie.
    Poi nel cookie memorizzi l'user_id, estrai i dati grazie all'user id e confronti l'hash.

  7. #7
    Guest

    Predefinito

    Sono un pò arruginito e stamane ho riniziato ad esercitarmi per riprendere la mano e devo questo sistema login... Allora, ho questa porzione di codice:
    Codice PHP:
    function login($name, $pass)
    {
    global
    $config;
    global
    $db;

    $sql = 'SELECT user_id, user_name, user_pass, user_real_name
    FROM '
    . USERS_TABLE . '
    WHERE user_name = \''
    . $db->sql_escape($name) . '\'
    AND user_pass = \''
    . $db->sql_escape($pass) . '\'';
    $result = $db->sql_query_limit($sql, 1);

    if (
    $db->sql_affectedrows())
    {
    $row = $db->sql_fetchrow($result);

    $_SESSION['user_id'] = $row['user_id'];
    $_SESSION['user_name'] = $row['user_name'];
    $_SESSION['user_pass'] = $row['user_pass'];
    $_SESSION['user_real_name'] = $row['user_real_name'];
    $_SESSION['user_logged'] = true;

    $expired = time() + 3153600;
    $path = '/' . $config['script_path'] . '/';

    setcookie('user_id', $row['user_id'], $expired, $path, $config['server_name'], false, true);
    setcookie('user_name', $row['user_name'], $expired, $path, $config['server_name'], false, true);
    setcookie('user_pass', $row['user_pass'], $expired, $path, $config['server_name'], false, true);
    setcookie('user_real_name', $row['user_real_name'], $expired, $path, $config['server_name'], false, true);
    setcookie('user_logged', true, $expired, $path, $config['server_name'], false, true);

    return
    true;
    }

    return
    false;
    }
    I Cookie vengono scritti correttamente e la scadenza è esatta, però non riesco a capire come posso mantenere l'array $_SESSION valorizzato! Devo farlo utilizzando $_COOKIE?


Regole di scrittura

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