Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP, ongelma cookien poistossa

Clacier [04.08.2010 16:30:01]

#

Hei. Olen tehnyt tämän ( https://www.ohjelmointiputka.net/koodivinkit/25190-php-ostoskoriskripti ) koodin pohjalta suhteellisen pitkälle tehdyn hyvän ostoskorikoodin, mutta nyt tuli ongelma.

Eli tein nyt sellaisen että formilla lähetetään ostajan tiedot send.php:seen joka sitten lähettää adminille s-postin ostoksesta yms. tallentaa ostajan tiedot.

Sinne pitäisi nyt siis saada koodinpätkä, joka poistaa kaikki nuo tuotteet ostoskorista oston yhteydessä. Kyseisessä koodissa yksi tietty tuote poistetaan tällaisella koodilla:

<?php
if (isset($_GET['poista']) && $_GET['poista'] == true) {
        //Vastaanotetaan GET-taulukon kautta lähetetty tuotteen id
        $poistaID = $_GET['tuoteID'];
        /* Luetaan edellä vastaanotetun id:n avulla oikeaa evästettä ja pilkotaan sen tiedot
        omiin muuttujiin  */
        $tiedot = explode("=",$_COOKIE['tuote'.$poistaID]);
        $id = $tiedot[0];
        $maara = $tiedot[1];

        /* Selvitetään onko tuotteita ostoskorissa enemmän kuin yksi, jotta tiedetään
        poistetaanko koko eväste vai päivitetäänkö määrä-tieto  */
        if ($maara > 1) {
            //Vähennetään tuotteen määrää yhdellä ja päiviteen eväste luomalla uusi...
            $maara--;
            setcookie('tuote'.$id,$id.'='.$maara,time() + 60*60*24);
        }
        else {
            //Tuotteiden ollessa vain yksi, koko eväste poistetaan
            setcookie('tuote'.$id,'',time() - 60*60*24);
        }
?>

mutta miten kaikki keksit saisi poistettua kerralla eikä ainoastaan yhden tuotteen?

Olen yrittänyt send.php:n loppuun mm. tällaista:

<?php
foreach($_COOKIE as $cookie) {
   setcookie($tuote1, time() - 60 * 60 * 24);
   setcookie($tuote2, time() - 60 * 60 * 24);
   setcookie($tuote3, time() - 60 * 60 * 24);
   setcookie($tuote4, time() - 60 * 60 * 24);
}
header("location: /?id=ostoskori&subid=tilausvastaanotettu");
?>

Metabolix [04.08.2010 16:35:52]

#

Helpompi ratkaisu olisi tallentaa koko ostoskori yhteen evästeeseen.

<?php
// Tallennus:
$ostoskori = array();
$ostoskori[$id1] = $maara1;
$ostoskori[$id2] = $maara2;
$ostoskori[$id3] = $maara3;
setcookie("ostoskori", serialize($ostoskori), time() + 60 * 60 * 24);

// Haku:
$ostoskori = array();
if (isset($_COOKIE["ostoskori"])) {
  $ostoskori = @unserialize($_COOKIE["ostoskori"]);
  if (!$ostoskori) {
    $ostoskori = array();
  }
}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta