1

PHP セッションについていくつか質問があります。すぐに答えが得られることを願っています。

  1. Cookieを作成せずにセッションのみを使用する場合。セッションはクライアント ブラウザで自動的に Cookie を作成しますか?

  2. セッションIDを知るには?開発者によって作成されたものですか、それとも作成された各セッションは ID によって参照されていますか?

  3. セッションを破棄する場合、破棄する前に、自分のサイトでコードを記述したことのない Cookie も削除する必要がありますか? (選挙のように年に一度のログインを作成する必要があるため、ユーザー情報をクライアントに保存する必要はありません。)

  4. 私のコードが$_SESSION['user']='xxx'「yyy」がログインすると$_SESSION['user']、セッションデータがサーバーに保存されるため、「yyy」に置き換えられますか?

  5. サイトで処理できる同時ユーザー数を知るにはどうすればよいですか? これは、セッションの管理方法と関係がありますか? またはサーバートラフィック?

  6. セッションもハイジャックされる可能性があることをどこかで読みました。したがって、セッションをサーバーの /tmp ではなくデータベースに保存することをお勧めします。セッションをデータベースに保存する方法は? セッションが作成されたときに挿入するクエリを作成し、セッションが破棄されたときにそれを削除するという、特定のプロセスがありますか?

前もって感謝します。

4

2 に答える 2

4
  1. PHP はデフォルトで Cookie を使用します。を呼び出したときにセッション Cookie が存在しない場合はsession_start()、作成されます (session_start() 呼び出しの前に出力が実行されていないなど、さまざまな条件が満たされていると仮定します)。

  2. session_id()

  3. セッションの破棄とは、サーバー上のセッションに保存されているデータを消去することを意味します。クライアント側でセッション Cookie を手動で削除する必要があります (期限切れにすることにより)。
  4. セッションは、ID によって特定のユーザーに結び付けられます。2 人の異なるユーザーは 2 つの異なる ID を持つことになります。つまり、$_SESSION は各ユーザーに対して一意になります。すべてのユーザーのセッション変数に同じ値を割り当てた場合、すべてのユーザーは同じ値を持ちますが、その値の一意の COPY になります。
  5. これには答えがありません。関連する変数が多すぎる: サーバーのメモリ/CPU 速度、ネットワーク帯域幅、ディスク帯域幅、コード効率、何とか何とか
  6. セッションは乗っ取られる可能性があります。マルチサーバー PHP インストールを行っているか、サーバーを他の人と共有している場合を除き、データベースでのセッションは必要ありません。セッション ファイルはサイトごとに一意にすることができるため、ファイル ベースのセッションを使用することは必ずしもセキュリティ上の問題ではありません。

独自のセッション ハンドラーを実行している場合は、セッション データの作成/更新/削除を担当します。

于 2013-08-09T17:55:49.040 に答える
3

答え:-

1)。はい、名前は「PHPSESSID」または「php.ini でセッションに設定されたデフォルト名」です。

2)。関数の助けを借りてセッションIDについて知ることができsession_id()ます。

3)。はい、必要に応じて可能です。セッションを破棄することをお勧めする方法

if(session_id() == '' || !isset($_SESSION)) {
    session_start();
}
session_unset();
session_destroy();
session_write_close();
setcookie(session_name(),'',0,'/');
session_regenerate_id(true);

4)。いいえ 各ユーザーは、セッション フォルダーに異なるセッション ストアを持っています。

5)。依存します...サーバースペースとセッションサイズに依存します。[参考までに、セッションはサーバーにファイルとして保存され、そこから参照されます]、そのような質問に答えるには議論の余地があります。

6)。セッションはハイジャックされる可能性があります。そのために、ホストがすべてのサイト セッションを 1 つのフォルダーで提供する場合は、ホストを変更することをお勧めします。セッションを開始するための私の推奨方法は次のとおりです。

if (session_start()) {
$exp = "7200"; // set your expiry time, here 60*60*2 = 7200 i.e, 2 hour
    setcookie('PHPSESSID', session_id(), time()+$exp, '/', null, null, true);
}

上記のコードで何が起こっているか、実際にはセッション名と値を httpOnly の Cookie でオーバーライドしています。システムで「TraceEnable」がオフになっていることを確認してください。これにより、Cookie の盗用がほぼ不可能になります。

于 2013-08-09T18:04:42.420 に答える