Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    7

    Effettuare due volte il Login

    Ok, premetto che non sono una cima nella conoscenza del php/mysql, ma con un po' di applicazione ero arrivato a comprendere come effettuare un Login utilizzando le sessioni:

    I dati del form di registrazione vengono inseriti in una tabella del Db. Se i dati immessi successivamente nel form per il Login corrispondono a quelli inseriti nella tabella, allora può avere inizio la sessione. Fin qui tutto bene, poichè l'action del form rimanda alla pagina dove vengono registrate le variabili di sessione. In breve il codice sarebbe questo:

    <?
    session_start();

    //Codice di connessione al database
    ...

    //Query SELECT per accertarsi che nick e pass siano corrispondenti
    ...

    $nickname = $_POST['nickname'];
    $password = $_POST['password'];
    $... = $_POST['altricampi'];

    if (...) { //dove le condizioni sono quelle espresse nella query per l'autenticazione
    session_register('nickname');
    session_register('password');
    session_register('...');
    header("Location: homepage.php");
    }

    ?>

    Questo codice in breve dovrebbe riportare alla home page dove ho compilato il form per effettuare il login con le variabili di sessione settate. Ma affinchè esse siano effettivamente settate devo ripetere il Login due volte, perchè la prima volta vengo riportato alla home, ma le variabili non sono settate, mentre la seconda volta sì.

    Tuttavia ho notato che, appena effettuato il login, se ritorno alla home page tramite <a href...> oppure header("...") devo ripeterlo per la seconda volta, mentre se ritorno alla home page ridigitando il sito nella barra degli indirizzi del browser vengo immediatamente riconosciuto.

    Qual'è il problema, dunque, per il quale devo effettuare due volte il Login?
    Può dipendere dal modo in cui si viene reindirizzati alla home?

    GraSSie!

  2. #2
    non usare session_register ma $_SESSION['variabile']

    http://it2.php.net/manual/it/ref.session.php

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Non utilizzare lo short_open_tag, utilizza il tag di apertura completo.

    Non utilizzare session_register, utilizza $_SESSION

    Richiama http://www.php.net/session_write_close prima di effettuare il redirect tramite header location, ed aggiungi l'ID di sessione all'url che utilizzi in header location per propagare correttamente la sessione.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    7
    Uhm... Secondo le modifiche da voi suggerite, ho modificato il codice, sicchè alla realizzazione della condizione espressa dall'if venga eseguita questa porzione di codice:

    $var = $_POST...
    $var2 = $_POST...
    ...

    if (...) {
    $_SESSION['var'] = $var;
    $_SESSION['var2'] = $var2;
    $_SESSION['var3'] = $var3;
    $_SESSION['var4'] = $var4;
    session_write_close();
    header("location: pagina.php");
    }

    Tuttavia ci sono ancora dei dubbi: come attacco il SID all'url dell'header? Credo che sia necessario farlo perchè, modificato così, il problema non si risolve. E inoltre credo mi serva anche renderlo trasparente grazie all'opzione --enable-trans-sid, no?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    7
    Uppo con un dubbio: attaccando l'id di sessione all'url, la sessione viene immediatamente riconosciuta, quindi teoricamente il problema viene risolto: tuttavia rimane il solito problema, che, se non per l'antiestetismo nell'url, rimane per la sicurezza: l'id di sessione nell'url. Ho sentito tanti modi per eliminarlo:

    1) l'id di sessione viene automaticamente celato (ma, a quanto pare, non è così. Non definirlo esplicitamente nell'url significa riavere i problemi di cui sopra)

    2) bisogna utilizzare il comando (--enable-trans-sid): tuttavia io non comprendo dove posizionarlo, come, perchè... etc.

    Qualcuno sa risolvermi il problema?

  6. #6
    non e' chiaro il tuo problema.

    per espandere l'id di sessione allo scopo di recuperare i dati in pagine successive ci sono solo due modi "automatizzati": con il cookie di sessione oppure con l'invio dell'id nell'URL.

    con il cookie ti garantisci ragionevolmente che chi si connette e' lo stesso browser che ha effettuato il login. Occhio che dico browser e non utente perche' potrebbe pure essere qualcun altro che sta usando il pc, autorizzato o meno, del tuo user.

    L'altro e' inviare l'id di sessione tramite URL, ma e' chiaro che se io prendo l'url e lo invio ad altri (sms, e-mail ... quel che ti pare) e queste terze persone copiano l'indirizzo nel loro browser e possono connettersi come se fossero autenticati.

    abilitando il trans-sid ( --enable-trans-sid) nel caso che i cookie del browser fossero disabilitati il SID verra' inviato tramite URL in modo automatico.

    Ma come risolvere e' molto semplice: non cookie no privilegi... se non abilita i cookie ... ciccia. Cosi' fan tutti.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.