2016-06-02 16 views
15

Jestem programistą noob, więc z góry przepraszam za oczywiste błędy. Spędziłem w zeszłym tygodniu tworzenie bazy danych produktów. Mam też punkt, w którym mogę dodawać produkty za pomocą formularza, przeglądać wszystkie produkty dodane itp. Używam sesji, które są tworzone za pomocą danych wejściowych formularza. Staram się dołączyć do strony usuwania produktu działa, próbowałem za pomocą unset, aby wyczyścić zmienną, ale nie można go zbyt działa.PHP Unset Session Variable

Dodaj stronę produktu, który ustawia zmienną sesji:

$_SESSION['Products'][] = $_POST; //is how i set the session on the add products page. 

unset $_SESSION['Products'][]; //is how i have tried to clear the session although it does not work. 

Każdy punkt we właściwym kierunku będzie mile widziana!

+3

'unset ($ _ SESSION [ 'Produkty']);' wystarczy – Thamilan

+1

i aby wyczyścić sesję session_unset(); –

+0

Przydałoby się to nieco do myślenia. Myślę, że musiałbym zrobić więcej niż zdjąć zmienną sesji. Musiałbym usunąć całą tablicę dla tego produktu ze strony mojej listy produktów. Mój zły – boothprod

Odpowiedz

25

Można rozbrojony zmienna sesja przy użyciu:

  1. session_unset - uwalnia wszystkie zmienne sesji (jest równa użyciu: $_SESSION = array();)
  2. unset($_SESSION['Products']); - rozbrojony indeks Tylko produkty w zmiennej sesji. (Pamiętaj: Musisz użyć jak funkcja, a nie jak kiedyś)
  3. session_destroy - Niszczy wszystkie dane zarejestrowane w sesji

znać różnicę pomiędzy używaniem session_unset i session_destroy, przeczytaj ten SO answer. To pomaga.

2

Jeśli chcesz całkowicie usunąć sesję można użyć tego:

session_unset(); 
session_destroy(); 

Właściwie oba nie są neccessary ale to nie boli.

Jeśli chcesz usunąć tylko określoną część myślę, że trzeba to:

unset($_SESSION['Products']); 
//or 
$_SESSION['Products'] = ""; 

w zależności od tego, co trzeba.

1

unset to funkcja, a nie operator. Użyj go jak unset($_SESSION['key']);, aby usunąć ten klucz sesji. Możesz jednak użyć także session_destroy();. (Pamiętaj, aby rozpocząć sesję także z session_start();).

+0

'unset' to * nie * funkcja, ale konstrukt językowy – PeeHaa

4

Unset to funkcja. Dlatego musisz podać, która zmienna ma zostać zniszczona.

unset($var); 

W twoim przypadku

unset ($_SESSION["products"]); 

Jeśli trzeba zresetować cały zmiennej sesji zadzwoń

session_destroy(); 
+0

Nitpicking tutaj:' unset' to konstrukcja językowa i * nie * funkcja. – PeeHaa

+0

Tak. Jest to konstrukcja językowa. Ale sam podręcznik php kategoryzuje unset jako funkcję obsługi zmiennych. www.php.net/manual/en/ref.var.php. W każdym razie wystarczy podkreślić fakt, że nazwa zmiennej powinna być do niej przekazywana. –

+0

Tak, ale różnica jest. To nie jest funkcja. – PeeHaa