3

SESSION['variables']サイトにあるすべてのページの上部に何かを含めることなく、ユーザーがページを離れたときに設定を解除するにはどうすればよいですか?

あなたが知っているかもしれないベストプラクティスはありますか?

ありがとう。

編集

会社と顧客を設定するためのウィザードがあります。これには、会社用と顧客用の 2 つのページが含まれます。ユーザーが会社で入力したデータを顧客用に再利用したい場合は、チェックボックスをオンにすると、1 ページ目 (会社) のフォームが投稿されると、2 ページ目 (顧客) でそれらのフィールドが自動的に設定されます (住所、番地、電話番号など)。ユーザーはいつでもページ 1 とページ 2 にアクセスできるので、セッションを設定解除する必要があります。

2 ページ目にフィールドを設定した後でセッションを設定解除できますが、ブラウザを更新すると、フィールドが再び空になります。もちろんこれは大きな問題ではありませんが、ユーザーが他のページに移動したときにのみこれらのセッションの設定を解除する簡単な方法はありませんか (ブラウザーを終了せずに、私の Web サイト内で)。

編集

私のコード:

会社ページ:

$_SESSION['wizard2']= "true"; // used for manipulating page when entering in wizard mode
if (isset($_POST['savedata'])) // if user wants to re-use data from page1
{
$_SESSION['savedata'] = "true";
$_SESSION['custprovincesession']=mysql_real_escape_string($_POST['compprovince']);
header("Location:customer_page.php");
exit();

顧客ページ:

if (isset($_SESSION['wizard2'])) // used for manipulating page when entering in wizard 
{
    unset ($_SESSION['wizard2']);
}
if (isset($_SESSION['savedata'])) // if user wants to re-use data from page1
{
    $_SESSION['wizard3'] = "true";
}


  <tr>
    <th><label for="custprovince">Province:</label></th>
    <th><input type="text" name="custprovince" style=width:200px id="custprovince" size="8" value="<?php if (isset($_SESSION['wizard3']))   {   echo $_SESSION['custprovincesession'];}?>"/></th>
    <th>&nbsp;</th>
    <th>&nbsp;</th>
  </tr>

2ページの終わりに:

if (isset($_SESSION['wizard3']))
{
    unset ($_SESSION['wizard3']);
    unset ($_SESSION['custprovincesession']);
}

このため、ページを更新すると、セッションが設定解除されます。ユーザーが「customer_page.php」を離れたときにこれらのセッションの設定を解除する他の方法はありませんか?

4

5 に答える 5

3

これはばかげた質問かもしれませんが、なぜすべてのページで特定のセッション変数の設定を解除したいのですか?

確かに、セッションのポイントはページビュー間で持続することであるため、特定のトリガーポイント(ユーザーがシステムからログアウトするなど)でのみセッションの設定を解除またはクリアする必要があります。

質問に答えるために、多くのフレームワークは通常、すべてのスクリプトに単一のエントリポイントを使用します。これは、初期化を行い、実際のページ作業をコントローラーにファームしてから、単一のエントリポイントに戻ります。この方法を使用する場合は、ページの最後に任意の終了ロジックを配置できます。

于 2012-11-22T09:21:40.387 に答える
2

質問を正しく理解していれば、実際にはセッションを使用せず、ページ間の POST 変数に依存します。

あなたがしたいことは、会社のページから顧客のページに直接移動するとき (またはその逆の場合) に、特定のフォーム フィールドのみを保持することです。ユーザーが直接、または後で顧客ページにアクセスしたとき、フィールドはクリアである必要があります。

その場合、フォームを送信するときに、別のページに投稿して REQUEST からデータを収集するようにします。

実際にフォームを別の場所に投稿して (会社の追加を処理するため)、顧客のフォーム ページに転送する場合は、非表示のフォームを投稿するか、ワークフローを再配置して、会社と顧客の挿入が最後に行われること。

于 2012-11-22T09:41:14.167 に答える
1

関数を試してくださいsession_destroy();

于 2012-11-22T09:19:40.850 に答える
1

これには 2 つの方法があります。

1) session_destroy(); by using this function.
2) unset($_session[$var_name or 'session_name']);
于 2012-11-22T09:34:32.697 に答える
0

接続が切断されると、セッションは自動的に破棄されます。ユーザーがブラウザウィンドウを閉じるか、ページのすべてのタブを閉じると、セッションは自動的に破棄されます。

于 2012-11-22T09:20:34.850 に答える