2

1 つのブラウザーで 2 つのセッション Cookie を作成したいプロジェクトがあります。最初のセッションは個人を一意に識別するためのもので、2 つ目はユーザー間でセッション内のイベントを共有するためのものです。これにはデータベースを使用していますが、セッションが終了するとデータが消えるようにしたいと考えています。システム内にログインはありません。

機能を複製する Cookie システムを作成する以外に、これを行う方法はありますか?

たとえば、次の 2 つのセッション Cookie があります。

name=someRandomUUIDsession=valueSharedBetweenUsers.

nameセッションを複数のユーザーと共有したくありませんが、セッションは共有されsessionます。考え?

4

4 に答える 4

3

ユーザー間で情報を共有したい場合、ファイル システムを使用するため、セッションを使用することはお勧めできません。ロック、同時実行性などのすべての問題を処理するデータベースを使用することをお勧めします。

あなたが求めていることは技術的に可能ですが、私は強くお勧めしません。

編集

あなたの要件を正しく理解していると仮定すると、次のようになります。

  1. セッションのみを使用して、そのユーザーに関連するセッション データを保存します。次のようなものを含めることができます。

    $_SESSION['name'] = 'test name';
    $_SESSION['groupid'] = 2;
    
  2. フィールドを持つ MySQL DB とテーブルgroupidXXXXX(保存するデータ)、timestamp

誰かが特定のグループ ID の情報を更新するたびに、タイムスタンプを更新します。

次に、単純な cronjob を実行して、存在するかどうかを確認しますcurrent time - timestamp > 3600(1 時間)。それを古いものと見なして、それらのレコードを削除できます。

于 2010-08-30T16:54:56.310 に答える
2

「現在の」セッションは 1 つしか持てないと *思う* のですが、あなたが参照している機能は session_name です:

http://www.php.net/manual/en/function.session-name.php

クッキーの機能は非常にシンプルです。代わりにそれを調べることをお勧めします。

于 2010-08-30T17:00:27.090 に答える
1

「valueSharedBetweenUsers」はどこから来たのですか? 定数またはデータベース エントリですか。

いずれにせよ、グループごとに 1 つのセッションを作成するのは意味がありません。代わりに、各ユーザーにユーザーごとに一意のセッションを提供する必要があります。各個人のセッション属性として「共有」属性を使用します。

したがって、一意のセッションを開始してから実行してください<? $_SESSION['session'] = 'mySharedValue'; ?>

これで、誰もが一意の sessionID と共通の値「session」を持つセッションを持ちます。

(明らかに、後でこの属性を変更する必要がある場合は、認証された個人ごとに個別に変更する必要があります)

于 2010-08-30T17:00:48.800 に答える