Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 18 su 18
  1. #11
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Quote Originariamente inviata da cosmo98 Visualizza il messaggio
    Codice PHP:
    $tipoaccount= @$_SESSION['tipoaccount']; 
    mi serve per controllare il tipo di utente connesso, ovvero se esso e un rivenditore si va a prendere il rispettivo prezzo per i prodotto e così via..
    Ma è un'informazione ridondante, a che serve ripeterla per ogni prodotto? Già lo spazio a disposizione di un cookie è limitato, così sprechi un sacco di spazio.
    A questo punto direi che non puoi fare a meno di usare la notazione JSON per il contenuto del cookie, è diventato abbastanza complesso da rendere insensato l'uso della stringa con i divisori su cui fare l'explode.
    Devi salvarti un array JSON con le chiavi "tipoaccount" dove metti il tipo di utente una volta e basta, poi la chiave "prodotti" che conterrà a sua volta un array di prodotti e ogni prodotto sarà un array coi campi "id" e "quantità".
    Per ulteriori info su come usare JSON con PHP: http://php.net/manual/en/book.json.php
    per il resto ho capito cosa intendi che devo fare prima il controllo se il cookie è già settato [...]
    solo che non riesco a capire come devo tradurre quel blocco else per accodare un nuovo prodotto.
    Il cookie lo devi vedere come una variabile che contiene una stringa, lo leggi ed ottieni una stringa vera e propria.
    Ora, come fai ad aggiungere del testo ad una stringa? Concatenandolo con l'operatore . (punto), una volta concatenato il testo da aggiungere salvi di nuovo il cookie con la stringa aggiornata.
    Ad ogni modo, abbiamo detto che la stringa semplice non ha più senso nel tuo caso, quindi dovrai aggiornare l'array JSON (che in realtà è anch'esso una stringa, ma si gestisce diversamente, vedi il link sopra).

  2. #12
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56
    Ok farò come dici tu.. utilizzo il pacchetto JSON per il resto il ragionamento che sto seguendo è giusto?

  3. #13
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56
    ho seguito i tuoi consigli, ho modificato cosi il codice:
    codice:
    if(isset($_POST['IDprodotto'])&&isset($_POST['quantita']))
    {
        $IDprod= $_POST['IDprodotto'];
        $qta= $_POST['quantita'];
        $prodotti = array('IDprodotto' => $IDprod, 'quantita' => $qta);
        print_r($prodotti);
        
        $prodottiJS= json_encode($prodotti);
        echo '<br>'.$prodottiJS;
        
        if(!isset($_COOKIE['acquisto'])) 
        {
            setcookie("acquisto", $prodottiJS, time()+360000); 
        }
        
        else 
        {
            $_COOKIE['acquisto'].$prodottiJS;
        }   
    }
    qua vado a inizializzare il cookie se non è stato creato altrimenti accodo un nuovo elemento (come hai detto tu), mi sono reso conto che in realtà quel $_SESSION['tipoaccount'] non mi serve proprio, infatti essendo le variabili di sessioni superglobali posso in seguito vedere se l'utente è privato/rivenditore e vedere il corrispettivo prezzo tramite query ad database. Penso che questa prima parte non ce niente da modificare. Qualche problemino ce nel secondo script, quello dove vado a visualizzare:
    codice:
    if(isset($_COOKIE['acquisto'])) 
    {
        /*list($IDprod,$qta,$tipoaccount)=explode("|",$_COOKIE["acquisto"]);//[3]);
        echo 'ID PRODOTTO: '.$IDprod.'</br>';
        echo 'QUANTITA PRODOTTO: '.$qta.'</br>';
        echo 'TIPO DI UTENTE: '.$tipoaccount.'</br>';*/
        echo 'cookie settato';
        $prodotti = json_decode($_COOKIE['acquisto'], true);
        print_r($prodotti);
    }
    
    
    else echo 'cookie non settato';
    infatti cosi com'è adesso se ho più stringhe concatenate nel cookie non mi visualizza niente. Mi suggerisci come posso modificare?
    Grazie mille per i consigli che mi hai dato fino ad ora

  4. #14
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    Scusate se m'intrometto.

    Ma ha senso salvare il carrello degli acquisti nei cookie ? Non sarebbe più sicuro di salvare in un cookie o tramite sessione un identificativo e poi tutto il carrello in una tabella il cui identificativo ne sarebbe la chiave ? Semplifico ma è l'idea.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #15
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56
    mi sono reso conto che in realta' c'era un errore nel primo codice, questo dovrebbe essere quello corretto:
    codice:
    if(isset($_POST['IDprodotto'])&&isset($_POST['quantita']))
    {
        $IDprod= $_POST['IDprodotto'];
        $qta= $_POST['quantita'];
        $prodotti = array('IDprodotto' => $IDprod, 'quantita' => $qta);
        //print_r($prodotti);
        
        $prodottiJS= json_encode($prodotti);
        //echo '<br>'.$prodottiJS;
        
        if(!isset($_COOKIE['acquisto'])) 
        {
            setcookie("acquisto", $prodottiJS, time()+360000); 
        }
        
        else 
        {
            $newprodJS= $_COOKIE['acquisto'].$prodottiJS;
            setcookie("acquisto", $newprodJS, time()+360000); 
            print ($_COOKIE['acquisto']);
        }   
    }
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Scusate se m'intrometto.

    Ma ha senso salvare il carrello degli acquisti nei cookie ? Non sarebbe più sicuro di salvare in un cookie o tramite sessione un identificativo e poi tutto il carrello in una tabella il cui identificativo ne sarebbe la chiave ? Semplifico ma è l'idea.
    ma infatti nel cookie vado a salvare solo il codice del prodotto che l'utente vuole acquistare e la quantita' del prodotto, le altre in formazioni le vado a ricavare dal database, credo tramite una vista logica

  6. #16
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    Puoi semplificare in questa maniera.
    codice:
    if(isset($_POST['IDprodotto'])&&isset($_POST['quantita']))
    {
        $IDprod= $_POST['IDprodotto'];
        $qta= $_POST['quantita'];
        $prodotti = array('IDprodotto' => $IDprod, 'quantita' => $qta);
        //print_r($prodotti);
        
        $prodottiJS= json_encode($prodotti);
        //echo '<br>'.$prodottiJS;
    
       $newprodJS = isset($_COOKIE['acquisto']) ? $_COOKIE['acquisto'].$prodottiJS : $prodottiJS;
       setcookie("acquisto", $newprodJS, time()+360000);  
    }
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #17
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Puoi semplificare in questa maniera.
    codice:
    if(isset($_POST['IDprodotto'])&&isset($_POST['quantita']))
    {
        $IDprod= $_POST['IDprodotto'];
        $qta= $_POST['quantita'];
        $prodotti = array('IDprodotto' => $IDprod, 'quantita' => $qta);
        //print_r($prodotti);
        
        $prodottiJS= json_encode($prodotti);
        //echo '<br>'.$prodottiJS;
    
       $newprodJS = isset($_COOKIE['acquisto']) ? $_COOKIE['acquisto'].$prodottiJS : $prodottiJS;
       setcookie("acquisto", $newprodJS, time()+360000);  
    }
    si non ci avevo proprio pensato di scrivere quel blocco in notazione ternaria.. il resto va bene? Nell'altro script cosa posso modificare per far si che funziona?

  8. #18
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56
    @Alhazred gentilmente puoi dirmi cosa posso modificare per farlo funzionare?
    Grazie in anticipo

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.