Producten toevoegen aan cookie/updaten van een cookie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Als medior Java developer aan de slag in de farmac

Vacature Omschrijving Wil jij aan de slag als medior Java ontwikkelaar in een uitermate dynamische branche? Dan is deze partij in Oosterhout zeker interessant. Zij ontwikkelen en beheren zorgsystemen voor huisartsen, huisartsenposten, openbare en ziekenhuisapotheken, medische specialisten en geïntegreerde eerstelijns zorgorganisaties. Hierbij is samenwerken hun grote kracht bij het ontwikkelen van IT-oplossingen. Met innovatieve ontwikkelingen dragen zij bij aan kwalitatief hoogwaardige, betaalbare, doelmatige en toegankelijke zorg. Betere, efficiëntere en goedkopere zorg is waar zij aan willen meehelpen. Slimme IT-oplossingen zijn onmisbaar geworden om de zorg betaalbaar te houden in deze tijd van afname van de beroepsbevolking en tegelijkertijd de toename

Bekijk vacature »

Als PHP programmeur werken aan IT oplossingen voor

Vacature Omschrijving Deze fraaie partij ondersteunt bedrijven bij hun technische vraagstukken door middel van software, trainingen, de inzet van specialisten en state of the art apparatuur. Hun missie is: “Het leveren van technische producten, diensten en systemen die van meerwaarde zijn voor de opdrachtgevers.” Zij beantwoorden dan ook de meest uiteenlopende technische vraagstukken, waarbij zij zich richten op vijf marktsegmenten: Bovengrondse Infrastructuur, Ondergrondse Infrastructuur, Bouw & Installatietechniek, Geo & Data en Industrie & Energie. Als technisch specialist ontwerpen zij niet alleen producten en oplossingen voor deze marktsegmenten, maar nemen zij ook het beheer en onderhoud op zich. Deze groeiende partij

Bekijk vacature »

PHP Developers gezocht die van complexe online vra

Vacature Omschrijving Een grote klant is opzoek naar enthousiaste PHP developers (junior/medior/senior). De organisatie waar jij komt te werken ontwikkelt en bouwt succesvolle oplossingen voor complexe online vraagstukken zoals performance, usability en conversion. Daarnaast zorgen zij voor externe systemen ingericht voor productbeheer, point-of-sales en voorraadbeheer koppelt de organisatie probleemloos aan op eigen Magento gebaseerde webshops. Het is een informele organisatie waar de communicatielijnen kort zijn. Functieomschrijving Met drupal 8 of ShopWare realiseert de organisatie prachtige frond-ends op dynamische data uit allerlei systemen. Je houdt je in deze organisatie bezig met het ontwerpen, ontwikkelen en beheren van functionaliteiten van de applicaties

Bekijk vacature »

Jorn Reed

Jorn Reed

14/02/2018 20:25:30
Quote Anchor link
Ik heb op een product pagina een knop die het desbetreffende product toevoegd aan een cart array. Vervolgens komt die array in een cookie terrecht.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
 $cart
= [];
    $cart[$product['id']] = [];
    $cart[$product['id']]['product_name'] = $product['name'];

    if(isset($_POST['add'])){
        setcookie('cart', serialize($cart), time()+3600);
        $cart = unserialize($_COOKIE['cart']);
        dd($cart);
    }

?>


Hoe zorg ik er voor dat de cookie niet wordt overschreven maar wordt geupdate? Heb namelijk nog nooit echt goed met cookies gewerkt.
 
PHP hulp

PHP hulp

16/07/2019 07:11:56
 
- Ariën -
Beheerder

- Ariën -

14/02/2018 20:33:12
Quote Anchor link
Waarom zou je geen sessies gebruiken? Daar kan je hele array's in plaatsen en werkt stukken makkelijker.

Een bekende pitfall in jouw code. De waarde uit $_COOKIE is pas beschikbaar na een refresh, en niet direct.
Gewijzigd op 14/02/2018 20:35:09 door - Ariën -
 
Jorn Reed

Jorn Reed

14/02/2018 20:35:27
Quote Anchor link
Mensen hadden mij juist aanbevolen om cookies te gebruiken, omdat een sessie wordt afgebroken bij het sluiten van de browser en een cookie niet.

Achteraf is het de bedoeling dat hij het naar de shopping-cart.php stuurt dus daar komt het uiteindelijk te staan.
Gewijzigd op 14/02/2018 20:39:33 door Jorn Reed
 
- Ariën -
Beheerder

- Ariën -

14/02/2018 20:40:39
Quote Anchor link
Dan kan je net zo goed de sessie gewoon laten behouden zodra iemand de browser sluit met session.cookie_lifetime.

Als je zonodig met Cookies wilt werken kan je ook een unieke hash opslaan, en de cart opslaan in de database. Dan kan je de boel een eenvoudig overhevelen naar een account.
Gewijzigd op 14/02/2018 20:43:24 door - Ariën -
 
Joakim Broden

Joakim Broden

14/02/2018 21:44:43
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
    
    /*
     * Cart cookie nu altijd te benaderen via de $_COOKIE var.
     */

    if (isset($_COOKIE['cart'])) {
        $_COOKIE['cart'] = unserialize($_COOKIE['cart']);
    }
else {
        $_COOKIE['cart'] = [];
    }


    /*
     * Product toevoegen, opslaan in cookie.
     */

    if (isset($_POST['add'])) {
        $_COOKIE['cart']['ID VAN PRODUCT'] = [
            'id'        => 'ID VAN PRODUCT',
            'amount'    => 'AANTAL PRODUCTEN'
        ];

        setcookie('cart', serialize($_COOKIE['cart']), time() + 3600);
    }


    /*
     * Product verwijderen, opslaan in cookie.
     */

    if (isset($_POST['remove'])) {
        if (isset($_COOKIE['cart']['ID VAN PRODUCT'])) {
            unset($_COOKIE['cart']['ID VAN PRODUCT']);
        }


        setcookie('cart', serialize($_COOKIE['cart']), time() + 3600);
    }


    /*
     * Alle producten verwijderen, opslaan in cookie.
     */

    if (isset($_POST['remove-all'])) {
        $_COOKIE['cart']  = [];

        setcookie('cart', serialize($_COOKIE['cart']), time() + 3600);
    }


?>


Maar zoals Arien al zei zou ik een gebruiken van een DB.
Gewijzigd op 14/02/2018 21:48:16 door Joakim Broden
 
Obelix Idefix

Obelix Idefix

14/02/2018 22:39:27
Quote Anchor link
Jorn Reed op 14/02/2018 20:35:27:
Mensen hadden mij juist aanbevolen om cookies te gebruiken, omdat een sessie wordt afgebroken bij het sluiten van de browser en een cookie niet.

Ik heb mijn browser zo ingesteld dat bij afsluiten alle cookies, geschiedenis, etc. wordt verwijderd. Cookie of sessie zijn dus beide niet meer beschikbaar na afsluiten browser.

Vraag is wat je wilt bewaren en hoe. Op pc gebruiker lijkt me niet de plek.
 
Jorn Reed

Jorn Reed

15/02/2018 02:38:41
Quote Anchor link
Is het bijwerken van een super global eigenlijk handig, ik zie het niet vaak gebeuren, meestal zie ik dat er een array in de setcookie() functie wordt gegooid, en mocht de array geleegd worden, zal dat bij de array gebeuren en niet bij de super global $_COOKIE. Ik kan het mis hebben hoor, maar daarom vraag ik het ook :)
 
Thomas van den Heuvel

Thomas van den Heuvel

15/02/2018 15:29:39
Quote Anchor link
Jorn Reed op 15/02/2018 02:38:41:
Is het bijwerken van een super global eigenlijk handig, ik zie het niet vaak gebeuren.

Dan heb je nog niet veel gezien. Superglobals vormen onder andere een abstractiemechanisme. Een die overal toegankelijk is in code en scopes overstijgt. Per superglobal verschilt het ook wat je precies aan het doen bent, zo manipuleer je met $_COOKIE['cart'] (indirect) het cart-cookie. De superglobal is slechts het medium via welke je andere dingen manipuleert.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.