2013-01-02 16 views
5

Jestem nowy w PHP i nie mam dużej wiedzy na temat plików cookie.Jak przechowywać dane w ciasteczkach za pomocą php?

Wygląda na to, że muszę przechowywać moje dane w ciasteczkach, ponieważ potrzebuję chwilowo tych danych. Przeczytałem jakiś artykuł i wypróbowałem niektóre z nich, ale otrzymałem z tego pusty wynik.

tutaj jest mój kod:

<?php 
if (isset($_COOKIE['vaccine'])) { 
setcookie('vaccine',$vaccine); 
foreach ($_COOKIE[$vaccine] as $vaccine){ ?> 

<div class="control-group"> 
<label class="control-label"> 
<?php echo '&nbsp'.'<a href="javascript:void(0);" rel="tooltip"  
title="Delete" onclick="delete_vaccination('.$vaccine->vaccination_record_id.');"><i class="icon-minus-sign"></i></a>'.'';?><?php echo $vaccine->vaccination_record_brand;?> 

</label> 
</div> 

<?php }} ?> 
+0

co jest wartością '$ vaccine'? –

+1

Przypomnienie: Pliki cookie pojawiają się tylko przy następnej prośbie. To, co włożysz do pliku cookie za pomocą 'setcookie', nie pojawi się w' $ _COOKIE', dopóki użytkownik nie zadzwoni do skryptu. – Charles

Odpowiedz

2

Możesz (należy?) Użyć do tego sesji. Pliki cookie nie są tymczasowe, są przechowywane na komputerze klienta. Sesje są tymczasowe, są żywe, dopóki ich nie zniszczysz.

Ponadto masz jakieś błędy w PHP (nie tyle w obsługę plików cookie) $_COOKIE[$vaccine] będzie dereference wartości z $vaccine w macierzy $_COOKIE. Ponieważ $vaccine wydaje się być tablicą, patrzysz na $_COOKIE["Array"]. Będziemy chcieli, aby to naprawić w następujący sposób:

foreach ($_COOKIE["vaccine"] as $vaccine) 

Ponadto, jak jesteś oddanie obiektu w pliku cookie, trzeba serialize/unserialize nim, przed ustawieniem lub uzyskanie cookie:

// fetch the vaccines somewhere first 
setcookie('vaccine',serialize($vaccines)); 

Wtedy wreszcie , dlaczego ustawiasz plik cookie, kiedy plik cookie jest ustawiony? Powinieneś go przeczytać, gdy jest ustawiony.

Kompletny kod:

<?php 
if (isset($_COOKIE['vaccine'])) { 
    $vaccines = unserialize($_COOKIE['vaccine']); 
    foreach ($vaccines as $vaccine){ ?> 

     <div class="control-group"> 
     <label class="control-label"> 
     <?php echo '&nbsp'.'<a href="javascript:void(0);" rel="tooltip"  
      title="Delete" onclick="delete_vaccination('.$vaccine->vaccination_record_id.');"> 
      <i class="icon-minus-sign"></i></a>'.'';?> 
      <?php echo $vaccine->vaccination_record_brand;?> 

     </label> 
     </div> 

<?php }} ?> 
+0

dziękuję bardzo za cierpliwe wyjaśnienie mi tego. – claire

1

Jeśli to jest twój cały kod to gdzie jest dane, które idzie do $ szczepionki? Wygląda na to, że ustawiłeś ten plik cookie jako pusty.

to także błędy kodu; foreach powinien mieć $ _COOKIE ['vaccine'] zamiast $ _COOKIE [$ vaccine]. Ale zobacz poniżej komentarze na temat plików cookie i tablic.

Ponadto nie można przechowywać tablicy PHP w pliku cookie. Będziesz musiał serializować tablicę podczas zapisywania jej w ciasteczku i odserializować ją po otrzymaniu pliku cookie do tablicy PHP. Albo, albo spójrz na przykład # 3 w instrukcji PHP - http://php.net/manual/en/function.setcookie.php, jak radzić sobie z tablicami w ciasteczkach. Bądź ostrożny, że jeśli użyjesz tej metody, używając ciasteczek z tablicą, ustawionych zostanie wiele plików cookie. Które mogą być problemem. A więc możesz pomyśleć o serializacji.

Jedna z wersji serializacji jest podana w instrukcji setcookie w samym podręczniku PHP. Zobacz komentarz "cwillard at fastmail dot fm" na stronie podręcznika podano powyżej.

Również ustawione pliki cookie będą dostępne tylko podczas ładowania następnej strony. Nawet jeśli wprowadzisz dane do szczepionki $, po raz pierwszy zobaczysz puste miejsce. Po ponownym załadowaniu strony powinieneś zobaczyć, co to jest

+0

Nie wiem, jak ustawić ciasteczko, ale próbowałem zrobić print_r $ vaccine i zwraca tablicę. dziękuję za odpowiedzi .. – claire

Powiązane problemy