$_GET
変数をセッションに保存する最良の方法を説明してもらえますか。唯一の変更方法は、セッションが変更されているデータが変数sessions
と異なることを確認する場合です。GET
現在、私は持っています
$tid = clean_get($_GET['tid']);
すべてのページに含まれるグローバル ファイルでは、値$tid
が消去されsession
、ユーザーが$tid
URL に設定されたページにアクセスしていない場合などに保存されません。
URL で $_GET['tid'] を取得した場合は、その新しい値でセッションを再度設定します。それ以外の場合は、セッションから復元します。それでおしまい。
session_start();
$tid = (isset($_GET['tid']) && $_GET['tid']!="") ? clean_get($_GET['tid']) : $_SESSION['tid'];
これを試して、解決したと教えてください。
isset()などの関数を使用して、送信されているかどうかを確認します。その場合にのみ、それを交換する必要があります:
if(isset($_GET['tid']))
{
$tid = clean_get($_GET['tid'])
// Do stuff to change session data.
}
あなたが探しているのは次のようなものだと思います
session_start();
foreach ($_GET as $key=>$value) {
$_SESSION['getValues'][$key] = clean_get($value);
}
これにより、$_GET のすべての値が $_SESSION に格納されます。後で値を取得するには$_SESSION['getValues']['tid']
、呼び出した後に使用するだけsession_start()
です。
ここでは、フォームから入ったデータをフォーマットおよび/またはエスケープするだけのものであると想定しているclean_get()
ため、セッションに固執する前に各値でそれを呼び出すと、必要に応じてすべてのクリーニングが行われます。
注: 呼び出しはsession_start()
1 回だけにして、 で何かを行う前に必ず呼び出して$_SESSION
ください。そうしないと、エラー メッセージが表示されます。