どのような最新の、良い練習、そしてPHPでセッションを使用するための最も簡単な方法ですか? - PHP、セッション

PHPのセッションは、前回は私が使ったので、セッションを使う簡単な方法を探していましたが、それと同時に比較的安全で良い共通の方法です。

回答:

回答№1の場合は3

セッション管理の時間が戻ってきました(私はそれが約4.4だったと思います)。古いメカニズムはまだ機能しますが、廃止予定です。それはむしろ混乱するので、私はそれを避けることをお勧めします。今日、グローバル変数$ _SESSION(配列)にアクセスしてセッションを使用します。君は できる オブジェクトインスタンスをそこに配置しますが、次のページでセッションを開始する前に、それらのオブジェクトのクラス定義をロードする必要があります。使用 オートロード ここであなたを助けることができます。

絶対です セッションを開始する $ _SESSIONを使う前に。セッションを開始するとヘッダーが送信されるため、前に出力がないことがあります。これは、次の2つの方法のいずれかで解決できます。 どちらの場合も、スクリプトの開始時に常にセッションを開始します。もしくは、あなた すべての出力をバッファリングするスクリプトの終わりに送信してください。

1つの良いアイデアは、各リクエストでセッションを再生成することです。これはハイジャックをはるかに少なくする。

それはサイトをアクセス不能にする可能性があるため、(少し)悪いアドバイスです。 セッションIDを再生成する ユーザーの権限が変更されるたびに。一般的には、ログインするたびにこれを意味します。これは、セッション固定を防ぐためです(セッションハイジャックの一形態)。見る この最近のスレッド@ Sitepoint 主題についてもっと詳しく知りたい

Cookieベースのセッションの使用 のみ OKですが、ログイン時にセッションIDを再生成すると、セキュリティが追加されず、アクセシビリティが少し低下します。


回答№2については2

これまでのところ、シンプルさという点では、

# Start the session manager
session_start();

# Set a var
$_SESSION["foo"] = "whatever";

# Access the var
print $_SESSION["foo"];

回答№3の場合は1

データベースはセッションに対してより安全ですが、最初にセッションに格納しているものに焦点を当てるべきです - ユーザーを識別するためのID(実際にはページ間のファーストネームまたは一時変数としてMAYBE)以外のものは含まれていません。

私は単純に既定のクッキーを使用することを提案します。データベースセッションは、すべてのページで余分なヒットを与えます。すべてのサイトがslashdotではないにもかかわらず、これほどシンプルなものを事前に最適化することに害はありません。

使い方については、標準グローバル変数をお勧めします:

$_SESSION["yourvar"] = "somevalue";

そのメソッドをすべてのコードで使用すると、後でそのバックエンドを簡単に変更することができます session_set_save_handler、これは統一的な実装方法を提供するセッションバックエンド。オブジェクトを使ってすべてのセッション処理を行うことができます。配列( "Staticclass"、 "staticmethod")に配列を渡すだけです。

詳細な使用方法については、セッションの処理方法を見てみることをおすすめします。 KohanaPHP


回答№4の場合は0

PHPセッションをデータベースに保存することができます。 この 本。私はこの方法を使用しており、安全で実装が容易であることがわかっていますので、お勧めします。


回答№5の場合は0

$ SESSION配列をSession()にカプセル化する自動セキュリティフィルタ、フラッシュ変数(一度解読されたvar)、デフォルト値設定子など、セッションから変数を取得し、取得し、同様の(解離しない)方法で投稿できます。

その時点でSymfonyの動作を見てみると、非常に役に立ちます。


答え№6の場合は0

セッションは私のPHP知識の重要な部分でした。なぜなら、最初のWebアプリケーションを開発していたときに、ログインの認証問題を解決する助けとなったからです。

session_start();
if( isset($_POST["username"]) && isset($_POST["password"]) )
{
if( auth($_POST["username"], $_POST["password"]) )
{
//Authentication passed
$_SESSION["user"] = $_POST["username"];
// redirect to required page
header( "Location: index.php" );
}
else
{
//Authentication failed redirect to login
header( "Location: loginform.html" );
}
}
else
{
//Username and Password are required
header( "Location: loginform.html" );
}

回答№7の場合は-1

まず、あなたが持っていない限り、非常に具体的な良いビジネスの理由ではない。私は、プロジェクトのためだけにURLベースのセッションを主張したクライアントを持っていました。非常に安全でなく、痛みを伴います。

1つの良いアイデアは、各リクエストでセッションを再生成することです。これはハイジャックをはるかに少なくする。例えば。

session_start();
$old_sessionid = session_id();
session_regenerate_id();
$new_sessionid = session_id();

良い習慣であるもう一つのことは、あなたがシステムの一部として何らかの種類のユーザーログインを行い、ログアウト時にセッションデータを完全に無効化して空にして、ユーザーが本当にシステムからログアウトしていることを確認します。セッションCookieを削除するだけでログアウトが完了するシステムを見てきました。


関連する質問
メニュー
最も人気のある