HTTP通信はステートレスな(状態を持たない)通信のため、全てのユーザーは毎回訪れる度に初回訪問扱いになる。
例えば、何十万のアクセスユーザーに対してマイページを表示しようとする場合、再訪問者かどうかを過去のデータから判別して処理を行っていくと、膨大な情報処理が必要となり対応が追い付かなくなってしまう。
セッションとはブラウザ(Webクライアント)からサイトにアクセスした際の情報を保持する仕組みで、主に次の処理を見えない裏側で自動的に行なっている。
初回訪問時、個々のブラウザ(Webクライアント)上のCookieを利用し、セッションIDという個別の識別番号を自動発行し、擬似的に「訪問済み」の状態を保持させ、サーバの負荷を軽減する。また、セッション変数(スーパーグローバル変数)の使用を許可するため、プログラム側で値の代入も同時に行える。
次回訪問時、セッションIDを識別し同じ訪問者であることを認証できた場合のみ、セッション変数の値を参照できるようになる。違う訪問者であれば、その都度新たなセッションIDを発行する。
データベースのログイン認証が承認された場合は、セッション変数に許可であることを示すフラグ値を登録する。マイページごとにそのフラグの許可値を保持しているかチェックし、承認されていない場合は不正アクセスと見なしログインページにリダイレクトされる。