私は初心者プログラマーなので、明らかな間違いをおforびします。過去1週間、製品データベースの作成に少し時間を費やしました。フォームを使用して製品を追加したり、追加されたすべての製品を表示したりすることができます。フォーム入力データを介して作成されたセッションを使用しています。製品の削除ページを機能させるのに苦労しています。unsetを使用して変数をクリアしようとしましたが、機能しすぎません。
セッション変数を設定する製品の追加ページ:
$_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.
正しい方向の任意のポイントが高く評価されます!
次を使用してセッション変数を設定解除できます。
session_unset
-すべてのセッション変数を解放します(使用するのと同じです:$_SESSION = array();
)unset($_SESSION['Products']);
-セッション変数のProductsインデックスのみを設定解除します。 (覚えておいてください:使用したとおりではなく、関数のように使用する必要があります)session_destroy
—セッションに登録されているすべてのデータを破棄するsession_unset
とsession_destroy
の使用の違いを知るには、この SO answer を読んでください。それが役立ちます。
設定解除は関数です。したがって、どの変数を破棄する必要があるかを送信する必要があります。
unset($var);
あなたの場合
unset ($_SESSION["products"]);
セッション変数全体をリセットする必要がある場合は、
session_destroy ();
私がしたのと同じ理由で誰かがこのページに来た場合に備えて、私はこの答えを含めています。問題を突き止めようとして恥ずかしい時間を無駄にしただけです。私が呼んでいた:
unset($_SESSION['myVar']);
ログアウトスクリプトから。その後、ログインが必要なページに移動しても、サーバーはまだログインしていると判断しました。問題は、ログアウトスクリプトが呼び出していないことでした。
session_start();
セッション変数を設定解除しても、最初にセッションを開始しないと機能しません。
セッションを完全にクリアしたい場合、これを使用できます:
session_unset();
session_destroy();
実際には両方は必要ではありませんが、害はありません。
特定の部分だけをクリアしたい場合、これが必要だと思います:
unset($_SESSION['Products']);
//or
$_SESSION['Products'] = "";
必要に応じて。
unset
は関数であり、演算子ではありません。 unset($_SESSION['key']);
のように使用して、そのセッションキーを設定解除します。ただし、session_destroy();
も使用できます。 (必ずsession_start();
でセッションを開始してください)