Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 36

Discussione: sessioni

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    855

    sessioni

    Salve,

    avendo il seguente script di prova che manda ad una pagina web dove si vuole conservare il contenuto della variabile $nome_variabile (che, ad esempio, potrebbe contenere il contenuto di un carrello):

    <?php
    session_start();
    $nome_variabile = "pippo";
    session_register("nome_variabile");
    $PHPSESSID=session_id();
    echo "wow - $PHPSESSID";
    ?>

    e la pagina "wow":

    <?
    session_start();
    echo "La variabile è: ".$nome_variabile;
    echo "$PHPSESSID";
    ?>

    il tutto funziona correttamente. Soltanto che se i cookies sono disattivati, l'id di sessione cambia sempre. Pertanto, basta, ad esempio, che se uno fa "refresh" sul browser che il carrello non funziona più in quanto memorizzo i dati su db sulla base del PHPSESSIONID e quindi non posso editarli sulla base dello stesso PHPSESSIONID...

    Come posso fare?

    Grazie in anticipo.

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    A parte il fatto che nel 2005 sarebbe ora di non vedere più il "session_register", il fatto che le sessioni siano basate sui cookie non è una novità.
    Di conseguenza, hai due possibilità: o ti predisponi per utilizzare il trans_sid (http://it.php.net/manual/en/ref.session.php), oppure avvisi gli utenti del sito che se non hanno i cookie abilitati non potranno utilizzarlo. Personalmente opterei per la seconda ipotesi.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    855

    memorizzare le variabili

    Ciao, grazie per la risposta.
    Ma non mi è chiara una cosa: se un navigatore non ha i cookies abilitati, non c'è verso di prendere traccia univoca della sua connessione iniziale al sito, per esempio, ad un collegamento successivo?

    Ciao e grazie.

  4. #4

    Re: memorizzare le variabili

    Originariamente inviato da gio-mx
    Ciao, grazie per la risposta.
    Ma non mi è chiara una cosa: se un navigatore non ha i cookies abilitati, non c'è verso di prendere traccia univoca della sua connessione iniziale al sito, per esempio, ad un collegamento successivo?

    Ciao e grazie.
    Se per collegamento successivo intendi dopo chiusura del browser oppure della connessione Internet la risposta e' no. Se intendi nel passare da pagina a pagina allora vale la risposta di Luca200 con tutti gli altri suoi suggerimenti.

    Se usi le sessioni con i cookie o tramite trans_sid, perdi comunque i dati di sessione alla chiusura del browser lato client, oppure al raggiungimento del timeout di inattivita' lato sever.

    Puoi tenere traccia dell'utente con la gestione di un tuo cookie, ma lasciare modo di riconnettersi ed essere riconosciuti, come fa questo forum, va bene solo se tratti ciacole. Il primo che passa e che usa il PC sarebbe un utente valido....


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

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    855

    ok ultima cosa

    Ciao e grazie ancora per la risposta.
    Penso avrai notato che ultimamente faccio spesso domande ma sto cercando di realizzare il mio primo carrello.
    Il punto è che vorrei fare semplicemente questo:

    l'utente, girando per il sito e per i vari prodotti, aggiunge (speriamo) i vari articoli nel carrello (sempre visibile ad ogni pagina). Una volta che ha fatto la spesa, può evadere l'ordine.
    Fin qui nulla da obiettare.

    Il punto è che vorrei salvare i vari prodotti aggiunti in un database (in modo da cancellarli, modificarli, ecc. e riprenderli quando servono) attraverso un singolo record relativo ad un ordine.
    Usando i cookies non ci sarebbero problemi in quanto gestirei il record del database (relativo a quel collegamento al sito) in maniera univoca attravesro lo stesso session_id (anche se l'utente dovesse aggiornare la pagina perchè ci mette troppo a caricare, per esempio visto che non cambia).
    Però, vorrei creare un qualcosa che sia sempre compatibile.

    Mi è venuto in mente semplicemente di ricavare l'indirizzo IP all'entrata nel sito (tanto non cambia mai durante la navigazione delle varie pagine a meno che non si riconnette con il sito aperto, ipotesi più rara di avere i cookies disabilitati, comunque) e utilizzarlo come secondo id, diciamo, per trovare sempre lo stesso record da modificare nel database ordini.
    In tal modo, se il navigatore ha un IP fisso, riesco a riprendere tutti i dati dal db degli ordini (anche non evasi ma comunque caricati) oppure se il navigatore ha l'IP dinamico, ricomincia da capo, che non fa niente lo stesso.

    Che ne pensate?

    P.S. se la cosa vi sembra fattibile, come faccio a rendere globale la variabile dell'indirizzo IP, senza portarmela in giro per il sito?

    Grazie.

  6. #6
    Lascia perder l'IP per identificare un utente. Ci sono router, fast web che al solo nominarli dovrebbero fartelo dimenticare.

    Uno user si identifica con username e password. Piu' altri pin se fosse il caso. Potresti mettere i dati raccolti da un ordine nel db. Poi quando si riconnette e si identifica un determinato user, vedere se ha gia' ordini in un sospeso nel db e ripresentarlo oppure cancellare tutto e ricominciare da zero. Anche qui pero' dovresti prevedere un "wash-out" cioe' una pulizia ciclica degli ordini in sospeso non completati entro un determinato periodo.

    Tornando all'identificazione.... per prima cosa non tutti gli user vorrebbero essere identificati in modo automatico (io sono il primo), poi tu vendi ad una persona e non ad un IP. Le notifiche/conferme le devi mandare per e-mail e non come feed-back a video. Uno user deve potersi collegare ed essere riconosciuto da qualsiasi PC. Ormai i pc sono "abbastanza" ovunque. E se mi trovo a Roma, non capisco perche' dovrei andare a Parigi per completare un ordine solo perche' un asociale di gestore sito vuole l'ip della prima connessione che avevo fatto laggiu'.


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

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    855

    ok ma

    Ok, grazie per le solite competenti risposte.
    Comunque, alla fine, il problema riguarda l'editing del carrello in una sessione...
    Senza chiedere l'autenticazione tramite user e password (per quelli, come me, a cui piace fornire i dati solo nel momento effettivo dell'acquisto), come faccio, ad assegnare un identificativo univoco al navigatore, mentre si diverte ad aggiungere/sottrarre prodotti nel carrello, nell'arco di una sessione di navigazione?
    Senza cookie, basta che uno refresha la pagina che già il session_id cambia...
    Mi serve affinché le modifiche di un record possano essere riferite ad un unico navigatore...

    Devo usare per forza i cookies oppure c'è un'altra via per assegnare una variabile ad un navigatore?

    Grazie ancora Piero.Mac

  8. #8
    Gia' ti ha risposto Luca200 a questo.

    No cookies?? no party!


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

  9. #9
    Potresti usare una soluzione tipo questa, che è valida però sempre con i biscotti abilitati:
    Codice PHP:
    <?php
    session_start
    ();
    if (!isset(
    $_SESSION["stato"])) $_SESSION["stato"] = 1;
    if (!isset(
    $_REQUEST["stato"])) $_REQUEST["stato"] = 1;
    $vet = array(=> "maglione"=> "giubbino"=> "cappello"=> "pantalone");
    if (isset(
    $_GET["id"]) && ($_SESSION["stato"] == $_REQUEST["stato"])) {
    $_SESSION["carrello"].=$_GET["id"];
    echo 
    $vet[$_GET["id"]]." aggiunto al carello<hr>";
    $_SESSION["stato"]++;
    }
    if (isset(
    $_SESSION["carrello"])) {
    echo 
    " Nel carello sono presenti i seguenti prodotti:
    "
    ;
    for(
    $i=0$i<strlen($_SESSION["carrello"]); $i++) echo "[*]".$vet["_SESSION["carrello"][$i]]."
    ";
    }
    else echo "
    Nessun articolo presente nel carrello.";
    ?>
    <hr>[*][url="
    carrello.php?id=1&stato=<?php echo $_SESSION["]">Maglione[/url][*][url="carrello.php?id=2&stato=<?php echo $_SESSION["]">Giubbino[/url][*][url="carrello.php?id=3&stato=<?php echo $_SESSION["]">Cappello[/url][*][url="carrello.php?id=4&stato=<?php echo $_SESSION["]">Pantalone[/url]
    <
    div align="center">
    [
    url="acquista.php"]Acquista[/url]
    </
    div>
    Dovrebbe funzionare anche senza il refresh della pagina.




    E vennero giù le critiche.
    Spero almeno che gli esperti non esagerino.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    855

    grazie

    Ciao, grazie mille per la soluzione proposta alla quale sto già lavorando, grazie all'input.
    Ho provato, nel frattempo, a navigare il forum con i cookies disabilitati e, in effetti, mi chiede sempre l'autenticazione...

    P.S. Una cosa extra: c'è un modo per portarsi una variabile tra le varie pagine del sito, senza necessariamente passarla tramite l'url?
    Tipo una variabile globale, ecc.

    Ciao e grazie.

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.