[PHP/cookies] serialize probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

ik hen een probleem met een serialize voor een cookie. Ik ben dus iets aan het maken dat controleert of er in een cookie een bepaald ID staat zoniet dat zet die hem erin.

Met de functie mapsoort wil ik dan checken of een mapje donker gekleurd moet zijn of licht gekleurd. Staat die erin dan wordt die lichtgekleurd staat die erin wordt die donker gekleurd. Nu heb ik de volgende cookie gemaakt een ID indien die er nog in staat te toevoegen aan de cookie array.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
    function addtocookie($topicid) {
      $unserialcookie = unserialize($_COOKIE['map']);
        if(@!in_array($topicid, $unserialcookie)) {     
          $unserialcookie[] = $topicid;
          $serialcookie = serialize($unserialcookie); 
          setcookie("map", $serialcookie, (time() + 30758400), "/",".kiter.nl");        
          echo $_COOKIE['map'];
        }

    }
?>  


als ik deze cookie dan ophaal en hem weer unserialize laat die niks zien terwijl die wel bestaat. Als ik de cookie echo krijg ik a:1:{i:0;s:1:\"1\";}
Terwijl dat moet zijn een array met ID 1 erin.

Hoe kan dit? Schijnbaar voegt die bij het aanmaken van de array naar een string functie slashes toe die ik niet weg kan krijgen.

Iemand een oplossing hiervoor?

[ Voor 7% gewijzigd door Verwijderd op 25-01-2006 12:52 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Waarschijnlijk staan magic quotes aan. Hierdoor voert php inderdaad zelf op alle get, post en cookie parameters addslashes uit. Een oplossing is om te kijken of dit aan staat (met magic_quotes_gpc) en mocht dit het geval zijn weer stripslashes over je map uitvoeren.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Idd klopt helemaal.

Ik had als getest met stripslashes maar dan zo:
$unserialcookie = stripslashes(unserialize($_COOKIE['map']));

Maar dat kan natuurlijk niet moet zo zijn:
$unserialcookie = unserialize(stripslashes($_COOKIE['map']));

Nu werkt die thx.