• User Newbie

    sessioni, cookie & co.

    Ciao a tutti!
    Allora sto creando un sito (fasullo) di annunci immobiliari.
    Ho gestito tutto tramite sessioni e funziona tutto alla perfezione (almeno la parte riguardante le sessioni :)).

    Ora leggo nel progetto, che "L'applicativo deve riconoscere l'utente quando effettua nuove connessioni dalla stessa macchina".

    Allora ho pensato: "probabilmente dovrò usare anche i cookie"
    A questo punto potete dirmi se mi sto sbagliando.

    Se il mio ragionamento è corretto:
    -devo creare un cookie così setcookie(NOME, VALUE, SCADENZA)

    Domande:

    1. Dove creo il cookie? Intendo... in che pagina nel sito? Quella del log in? La home?
    2. Se in quella pagina c'è "session_start()", il setcookie lo metto prima o dopo?
    3. Se torno sulla stessa pagina nella stessa sessione, mi crea un nuovo cookie?
    4. Se session_start va messo prima di qualunque output, è possibile comunque scriverlo dopo un commento?
      es:
      [php]
      <?php
      #papapapapapapapa
      session_start();

    ecc ecc
    ?>
    [/php]5) Quanto mi consigliate di far durare un cookie? Nel mio sito gli utenti creano annunci di vendita di immobili, e scelgono loro la validità del proprio annuncio, quindi credo che la scadenza debba essere fissata almeno dopo qualche mese. Che dite?

    Vi ringrazio per la pazienza e per le delucidazioni!!!


  • User Attivo

    Mi sa che stai facendo un po' di confusione...

    I dati relativi agli immobili vanno memorizzati in database, non nei cookie.
    Sessioni e cookie servono per gestire l'utente amministratore che entra nell'area di amministrazione del sito... area dalla quale può inserire, modificare, ecc.., i suddetti dati.


  • User Newbie

    Sì lo so, infatti tutti i dati relativi a immobili, annunci, offerte ecc li sto gestendo con Postgres.
    Io parlo dell'utente che si logga


  • User Newbie

    Alla domanda 2 penso risponda la 4... mentre riguardo il resto, se i cookie ti creano tanti problemi potresti ricorrere a un'altra soluzione, ad esempio coi database, che non sono manipolabili dall'utente e funzionerebbero anche se i cookie venissero cancellati.
    In ogni caso, per la prima domanda penso dipenda dal significato della consegna. Se la richiesta è riferita al singolo account dell'utente, ossia, riconoscere in ogni pagina qual è l'utente loggato dopo che si è loggato, allora dovresti creare il cookie subito dopo il suo login e quindi metterlo nella pagina del login. Mentre se la richiesta è più generale, ossia riconoscere anche connessioni di utenti diversi dalla stessa macchina, allora devi fare un controllo sull'esistenza del cookie ovunque richiesto e nel caso crearlo.


  • User Newbie

    Allora:
    per riconoscere se l'utente è loggato (e quindi può accedere a determinate pagine rispetto a chi non è loggato) e/o è amministratore (e quindi ha accesso a ulteriori pagine) sto gestendo tutto tramite sessioni.

    Per quanto riguarda il riconoscimento, immagino si riferisca al fatto che se un utente ritorna nel sito dopo una prima visita sempre dalla stessa macchina, allora dovrà uscire qualcosa come "Bentornato" invece di "Benvenuto".

    Tu parli di utenti diversi che si connettono dalla stessa macchina... io lavoro in locale quindi tutti i miei attuali 4 utenti si connettono sempre dallo stesso pc. Ma immagino voglia dire che io mi dovrei mettere nei panni di quell'utente che virtualmente sta usando il mio pc per navigare nel mio sito, quindi penso alla prima che hai detto.

    Se la richiesta è riferita al singolo account dell'utente, ossia, riconoscere in ogni pagina qual è l'utente loggato dopo che si è loggato, allora dovresti creare il cookie subito dopo il suo login e quindi metterlo nella pagina del login.

    Ma il mio problema è che non ho idea di come si gestiscano i cookie! Nel login avevo inserito il codice setcookie, ma non so come fare il controllo:x

    [PHP]
    <?php
    /*setcookie("user",$_POST['username'],time() + 604800 );
    #HO SETTATO IL COOKIE CON SCADENZA FISSATA TRA UNA SETTIMANA
    #se non è settata la variabile, elimino il cookie
    if (!isset($_POST['username'])){
    setcookie("user");
    }

    */
    ?>
    <html>
    <title>Index</title>
    <link href='stili.css' rel='stylesheet' type='text/css' />
    <body>
    <?php include('img.php'); ?>
    <table>
    <tr>
    <td valign='top'><?php include('header_host.php'); ?></td>
    <td>
    <?php
    #FILE PER EFFETTUARE IL LOG IN. SETTA USERNAME E PASSWORD COME VARIABILI DI SESSIONE
    include('db.php');

    #RECUPERO LOGIN E PASSWORD DALLA FORM E
    #SE L'UTENTE HA CLICCATO SENZA AVER INSERITO ALMENO UNO DEI CAMPI
    if (empty($_POST['username']) || empty($_POST['password'])){
    echo "<table width='300' valign='center'><tr><td class='testo'>Non hai inserito il nome utente e/o la password</td></tr><br>";
    echo "<tr><td class='testo'><form method='POST' action='index.php'><input type='submit' value='Indietro' class='testo'></form></td></tr></table>";
    exit;
    }else{
    #SELEZIONO DAL DB TUTTI I DATI DELL'UTENTE
    $query_utente = pg_query($db,"SELECT autorizzato FROM utente WHERE username='".$_POST['username']."' AND pw='".$_POST['password']."'");
    $record_utente = pg_fetch_row($query_utente);
    if(!$record_utente){
    echo "<table width='300' valign='center'><tr><td class='testo'>Nome utente e/o password errati</td></tr><br>";
    echo "<tr><td class='testo'><form method='POST' action='index.php'><input type='submit' value='Indietro' class='testo'></form></td></tr></table>";
    }else{
    if ($record_utente[0] == 'f'){
    echo "<table width='300' valign='center'><tr><td class='testo'>Non puoi ancora navigare attivamente nel sito.<br>Attendi che l'amministratore ti dia l'autorizzazione.<br>Nel frattempo puoi <a href='home.php'>entrare come ospite</a>.</td></tr></table>";
    }else{
    #SALVO I DATI IN VARIABILI DI SESSIONE
    session_start();
    $_SESSION['username'] = $_POST['username'];
    $_SESSION['password'] = $_POST['password'];
    header('Location: home.php');
    }
    }
    }

    ?>
    </td>
    </tr>
    </table>
    </body>
    </html>
    [/PHP]


  • ModSenior

    Ciao michellemabelle,
    i cookie li trovi nella variabile $_COOKIE, con quella potrai effettuare tutti gli opportuni controlli.


  • User Newbie

    Ciao Thedarkita, se io metto il setcookie nel file di log, anche il controllo sulla variabile $_COOKIE dovrò farla lì?


  • ModSenior

    Se a te interessa sapere in tutte le pagine se l'utente ha il cookie o meno, dovrai farlo in tutte le pagine. Dipende cosa devi fare di preciso.


  • User Newbie

    "L'applicativo deve riconoscere l'utente quando effettua nuove connessioni dalla stessa macchina"

    Non mi interessa sapere in tutte le pagine se questo utente ha il cookie o meno. Io pensavo di settare il cookie nella pagina di log, e poi mettere il controllo nell'header (che compare comunque in tutte le pagine).

    Secondo te è una buona idea?
    E poi, domanda cretina, se metto il setcookie nel log, me lo risetta anche se ricompare lo stesso utente, giusto? Quindi il controllo dovrò farlo innanzitutto nella pagina di log?

    Una cosa del tipo:
    [PHP]
    <?php
    if (!isset($_COOKIE['username'])){
    setcookie('username',$_SESSION['username'], time()+3600);
    }
    ?>

    [/PHP]