SESSION変数を使用して1つのPHPページから別のPHPページにデータを渡すのが効率的かどうか疑問に思いました。SESSIONSは、ユーザーがWebサイトにログインし続けるためにのみ使用され、Cookieの代わりに使用されると思ったので、これを尋ねます。次のようなURIを介して、あるページから別のページにデータ(機密性がない)を渡す方がよいのではないでしょうmembers.php?name=Joe&age=28
か。
4 に答える
PHPセッションはブラウザにCookieを書き込み、そのセッションに関連付けられたデータをディスクに保存します。次のページの読み込み時にそれを読み戻すには、include()とほぼ同じくらいの費用がかかります。つまり、完全に些細なことです。
さらに、ユーザーがセッションデータを変更できるメカニズムを作成しない限り、ユーザーはセッションデータを変更できません。クエリ文字列を簡単に混乱させる可能性があります。
簡単な答え:はい、その効率的です。
あなたがしていることに依存します。そのページが正しく機能するためにその情報を必要とし、ログインの背後にない場合は、クエリ文字列を渡すことが方法です(検索結果、製品ページなど)。ログインの背後にある場合は、セッションを使用すると、URLをクリーンに保つことができ、ユーザーがページを悪用するのを困難にすることもできます(たとえば、クエリ文字列のデータを交換する)。
セッションは、ログイン情報だけでなく、多くのことに役立ちます。これらは、POST/リダイレクト/GETサイクル中、またはユーザーのセッションの状態(したがって名前)を追跡するその他のメッセージを保持するのに最適ですが、現在のセッションのみであり、長期的な永続的な構成オプションはありません。
効率に関する限り、セッション内のすべてのものは、ページが読み込まれるたびにシリアル化および非シリアル化する必要があることを覚えておく必要があります。名前と年齢を保存しても、それほど多くは追加されません。メガバイトの画像アップロードを追加するのはおそらく悪いことです。
効率の考慮よりも重要なのは、セッションデータが一時的に永続するだけであることを覚えておくことです。Joeが28歳であることを常に知りたい場合は、データベースに登録する必要があります。単一ページの読み込みでのみ役立つ場合は、URLにとどまるか、POSTする必要があります。あなたがそれを数分間覚えることに興味があるなら、セッションはそれを置く場所かもしれません。
はい、SESSIONにデータとメッセージを保存でき、どのページからでもアクセスできます。ただし、SESSIONはブラウザサポートを使用してデータを保存することを忘れないでください。それらはユーザーが手動で削除できます