私は初めてのphp開発者です。
私はこの方法でセッションを追跡します:
session_start();
if (!isset($_SESSION['user']->iduser)) {
die('Access denied. <br><a href=login.php>Please login</a>');
}
それは正しいアプローチですか?
あなたのコードは、オブジェクト全体をセッション変数に格納しているように見えますが、これは素晴らしいアイデアではありません(多くのスペースを占有し、大量のデータを格納する可能性があります。シリアル化/非シリアル化しなくても可能ですか? )。
また、ユーザーがまだ認証されていない場合、$_SESSION['user']
まだ設定されていないため、コードは警告をスローします。したがって、をチェックすること$_SESSION['user']->iduser
で、nullオブジェクトのプロパティ/値をチェックすることになります。コードはをチェックif (isset($_SESSION['user'])) {
し、場合によってはそれを検証する必要があります。
ユーザーのID/ユーザー名や暗号化されたパスワードなどの「エッセンシャル」をセッションに保存することをお勧めします。次に、各ページの読み込み中に、データベースに対して情報を再検証します。これは、ページの読み込みごとに追加のクエリですが、(私の意見では)それだけの価値があります。
私はあなたが本当にこの質問をしていると思います:
セッションで一意のIDでユーザーを識別しても大丈夫ですか?
私の答え:はい。これは頻繁に行われる方法であり、セッションで正常に機能します。私はCookieを使用してこのようにすることはしませんが、サーバー側のセッションストレージでは問題ないはずです。