私はphpを学び始めています。セッションについて質問があります。
今のところ、それがsession_start()
セッション変数を作成することを私は知っています。
わからないのは、作成したセッションにアクセスするときに、session_start()
もう一度使用する必要があるかどうかです。
そうであれば...
どうしてこれなの?私はすでにセッションを作成していて、なぜそれがブラウジングセッション全体に持続しないのだろうかと思います。
それから私が理解しているのは、それが新しいセッションを作成しようとしているということです。
いいえ:
session_start()
GETまたはPOSTリクエストを介して渡された、またはCookieを介して渡されたセッション識別子に基づいて、セッションを作成するか、現在のセッションを再開します。
アクセスする新しいページはそれぞれ、PHPのまったく新しいコンテキストです。以前のコンテキスト/セッション/データを再確立session_start
できます。
session_start関数は、セッション追跡を有効にするようにPHPに指示します。前のページで作成されたセッションは消去されません。$ _SESSION内の変数にアクセスする前に、session_start()を呼び出す必要があります。
session_start
—新規セッションを開始するか、既存のセッションを再開します
データベースを使用するたびにデータベースに接続するのと同じ方法です。セッションを保存している方法に接続します。セッション変数は消去されません。
また、ここで詳細を読んでくださいが、これはセッションがどのように機能するかを理解するのに役立つはずです:
アプリケーションを操作しているときは、アプリケーションを開き、いくつかの変更を加えてから閉じます。これはセッションによく似ています。コンピュータはあなたが誰であるかを知っています。アプリケーションをいつ開始し、いつ終了するかを認識します。しかし、インターネットには1つの問題があります。それは、HTTPアドレスが状態を維持しないため、Webサーバーがあなたが誰で何をしているのかを知らないということです。
PHPセッションは、後で使用するためにユーザー情報(ユーザー名、ショッピングアイテムなど)をサーバーに保存できるようにすることで、この問題を解決します。ただし、セッション情報は一時的なものであり、ユーザーがWebサイトを離れると削除されます。永続的なストレージが必要な場合は、データをデータベースに保存することをお勧めします。
セッションは、訪問者ごとに一意のID(UID)を作成し、このUIDに基づいて変数を格納することによって機能します。UIDはCookieに保存されるか、URLで伝播されます。
セッションデータはサーバー側に保存されますが、セッションへの参照またはIDはクライアントのブラウザCookieに保存されます。サーバーがセッションIDを認識するためにはsession_start()
、各ページで呼び出しを行う必要があります(上部)。最初に行うことは、ユーザーからIDを取得し、セッションデータを取得することです。セッションデータにアクセスするときはいつでも、すべてのページで必要です。
こちらもビデオチュートリアルです。http://blip.tv/step4wd/php-sessions_en-5983086
いいえ:常に新しいセッションが作成されるとは限りません。このページが既存のセッションを開始または維持することをスクリプトに通知するだけです。
セッションは、ページからページへと移動するサーバーの状態にすぎません。クライアント(ブラウザ)からはアクセスできません。セッションを維持するためにブラウザが実行する必要があるのは、ID(PHPではデフォルトのPHPSESSIDと呼ばれます)を渡すことだけです。
このIDは、リクエストを行うたびにサーバーに転送される限り、Cookie、GETまたはPOSTに保存できます。
答えはイエスです。あなたはすべてのページでそれをしなければなりません。そうしないと、未定義のインデックスエラーが発生します。
ファイルを含めるので、これは機能します
Index.php
<?php
session_start();
//file doesn't have session_start
include "file.php";
?>
作成、アクセス、破棄など、セッションを操作する必要があるすべての場所で、session_start()を使用する必要があります。
Cookieとは異なり、セッションを開始しない限り、セッションにアクセスしたり、セッションを操作したりすることはできません。