PHP uitgeschakeld sessievariabele

Ik ben een noob programmeur, dus bij voorbaat mijn excuses voor eventuele duidelijke fouten. Ik heb de afgelopen week een soort productdatabase gemaakt. Ik heb ook het punt waar ik producten kan toevoegen met behulp van een formulier, alle toegevoegde producten kan bekijken enz. Ik gebruik sessies die zijn gemaakt via de invoergegevens van het formulier. Ik heb moeite om een productpagina voor verwijderen aan het werk te krijgen, ik heb geprobeerd unset te gebruiken om de variabele te wissen, maar ik krijg het niet te werk.

ADD Productpagina die de sessievariabele instelt:

$_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.

Elk punt in de goede richting wordt op prijs gesteld!


Antwoord 1, autoriteit 100%

Je kunt de sessievariabele uitschakelen met:

  1. session_unset– Maakt alle sessies vrij variabelen (Het is gelijk aan het gebruik van: $_SESSION = array();voor oudere verouderde code)
  2. unset($_SESSION['Products']);– Alleen productenindex in sessievariabele uitschakelen. (Onthoud: je moet gebruiken als een functie, niet zoals je gebruikte)
  3. session_destroy— Vernietigt alle gegevens geregistreerd voor een sessie

Om het verschil te weten tussen het gebruik van session_unseten session_destroy, lees dit SO antwoord. Dat helpt.


Antwoord 2, autoriteit 12%

Uitschakelen is een functie. Daarom moet je opgeven welke variabele vernietigd moet worden.

unset($var);

In jouw geval

unset ($_SESSION["products"]);

Als je de hele sessievariabele moet resetten, bel dan gewoon

session_destroy ();

Antwoord 3, autoriteit 10%

Ik voeg dit antwoord toe voor het geval iemand om dezelfde reden als ik naar deze pagina komt. Ik heb gewoon een gênante hoeveelheid tijd verspild om het probleem op te sporen. Ik belde:

unset($_SESSION['myVar']);

van een uitlogscript. Vervolgens navigeerde ik naar een pagina waarvoor aanmelding vereist was en de server dacht nog steeds dat ik was ingelogd. Het probleem was dat het uitlogscript niet aanriep:

session_start();

Het uitschakelen van een sessie-var WERKT NIET tenzij u de sessie eerst start.


Antwoord 4, autoriteit 7%

Als u de sessie volledig wilt wissen, kunt u dit gebruiken:

session_unset();
session_destroy();

Eigenlijk zijn beide niet nodig, maar het kan geen kwaad.

Als je alleen een specifiek deel wilt wissen, denk ik dat je dit nodig hebt:

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

afhankelijk van wat je nodig hebt.


Antwoord 5, autoriteit 2%

unsetis een functie, geen operator. Gebruik het als unset($_SESSION['key']);om die sessiesleutel uit te schakelen. U kunt echter ook session_destroy();gebruiken. (Zorg ervoor dat u de sessie ook start met session_start();)


Antwoord 6, autoriteit 2%

Een PHP-sessie vernietigen

Een PHP-sessie kan worden vernietigd door de functie session_destroy(). Deze functie heeft geen argument nodig en een enkele aanroep kan alle sessievariabelen vernietigen. Als u een enkele sessievariabele wilt vernietigen, kunt u de functie unset() gebruiken om een sessievariabele uit te schakelen.

Hier is het voorbeeld om een enkele variabele uit te schakelen

<?php    unset($_SESSION['counter']); ?>

Hier is de oproep die alle sessievariabelen zal vernietigen

<?php    session_destroy(); ?>

Antwoord 7

// set
$_SESSION['test'] = 1;
// destroy
unset($_SESSION['test']);

Other episodes