<?php if ($_POST) { $_SESSION['zmienna'] = $_POST['input']; } ?> <form method="post"> <input type="text" name="input"> <input type="submit"> </form>
wynik to 3 puste tablice, to jest:
Kod
array(0) { } array(0) { } array(0) { }
Logika skryptu ma być taka. Jeśli jest $_POST, to znaczy że były przesyłane dane. Są mi one potrzebne (chcę wiedzieć nie tylko, że ktoś coś wpisał w polu tekstowym, ale także, co wpisał). A jak zastosuję Redirect After Post (jest to konieczne w moim skrypcie), czyli wyślę ten nagłówek, to $_POST jest już nieczytelne. Dlatego przed tym zamieniam to sobie na sesje i jest ok. W zmiennej sesji mam to, co ktoś wpisał w polu. No i zaczynają się schody. Następnie zachodzi konieczność wyświetlenia zmiennej sesji, a następnie unieważnienia jej, żeby przy odświeżeniu strony zmienna już nie istniała. I wszystko by działało, gdyby nie to, że jak unieważniam zmienną sesji, to w całym skrypcie. I nad wierszem unset($_SESSION['zmienna'], i pod nim. Według mojej logiki wynikiem powinno być:
Kod
array(0) { } array(1) { ["zmienna"] => string(5) "tekst"} array(0) { }
Ale tak niestety nie jest.
Jeśli nie operuję na zmiennych sesji, tylko na dowolnych innych, to wszystko jest ok - zmienna jest niewidoczna dopiero po wykonaniu unset(), natomiast przed normalnie ma wartość.
Może tablica $_SESSION ma jakieś specjalne właściwości i jej elementy należy kasować w inny sposób?

edit: oczywiście, da się w prosty sposób

<?php if ($_POST) { $_SESSION['zmienna'] = $_POST['input']; exit; } ?>
Ponieważ kod po nagłówku wykonuje się dalej, i unieważnia zmienną sesji niepotrzebnie...