2011-12-08 16 views
5

私は基本的なアプリケーションを構築しています。login.phpからindex.phpにユーザ情報を渡す方法を理解しようとしています。これまでのところ、私はログイン・ページを持っており、ユーザー・クラスを介してデータベースを介してユーザーを送信および認証します。その後、ユーザープロパティはデータベースから返される値に設定されます。そこからidはセッションに格納されます。ページからページへのユーザー情報へのアクセス方法を教えてください。私はちょうどセッションIDを持つデータベースを照会するための構築メソッドを構築する必要がありますか?それは安全か有効なアプローチですか?スタックオーバーフローの例があります。すべてのページの上部にユーザー名が表示される方法。ログインページでログイン後にユーザー情報にアクセスするにはどうすればよいですか?

+0

なぜユーザー情報をセッションに保存しないのですか? –

答えて

6

が鳴ります。つまり、どのメソッドが安全であるか、最適化されているかどうかを尋ねるだけです。

セッションやクッキーにできるだけ少ない情報を保存して、簡単な釣りのハッキングまでユーザーを開放しないようにするのが一般的です。理想的には、セッションIDを使って相互参照できるデータベースにセッションテーブルがあることを意味します。

はい、すべてのページの読み込みでクエリを実行しますが、これは標準のサイトではあまりオーバーヘッドではありません。あなたの意見をきちんと消毒する限り、それは安全ではありません。ユーザーがセッション情報を操作した場合、そのようにすることはできません。

また、ユーザーIDとユーザー名だけを使用している場合は、それらをセッションに安全に保存し、すべてのページの読み込み時にクエリを避けることができます。セッションやクッキーのデータを詰め込んで、あまり使われない情報で埋め尽くされた非常に長い配列でナッツをしないでください。

+0

+1;セッションデータの安全性に関する良い点 –

+0

@カイさんは私の質問をTに答えました、ありがとうございます。 – Scott

4

、他のページのセッションでデータベースから店舗の利用者情報、あなたは直接

<?php 
session_start(); 
$_SESSION['user'] = $username; 

や他のサイト

<?php 
session_start(); 
$_SESSION['user']; 
+0

あなたがあなたのプロフィールページに行くとき、stackoverflowの例に戻ると、そこにたくさんのデータがあります:あなたが答えた質問、あなたが聞いた質問など..あなたは明らかにそのすべてをセッションに保存するつもりはありませんだから、どのように$ _SESSSION ['USER']とIDを使ってデータベースからすべてのデータを取り出すのですか? – Scott

+0

あなたのSQL構造にあなたのプライマリIDがあるとします。$ _SESSION ['id']にIDを格納し、後で必要ならば各サイトで使用されるいくつかの基本情報(ユーザ名や名前など)を保存しますいくつかの困難で特定のクエリを取得し、ちょうど$ _SESSION ['id']からIDを取得し、あなたのSQLクエリでそれを使用してください –

1

にそれらを呼び出すことができますI基本的なアプリケーションを構築していますが、login.phpからindex.phpにユーザ情報を渡す方法を理解しようとしています

一つの方法は、PHPのセッションデータとして共有データを格納することです:http://www.tizag.com/phpT/phpsessions.php

<?php 
session_start(); // start the session 

$_SESSION['views'] = 1; // store session data 
echo "Pageviews = ". $_SESSION['views']; //retrieve data 

ストアあなたがすべてのページのために必要なユーザー・データ。 DBに拡張データを残すことができるので、大量のデータを前もって照会する必要はありません(SOのプロファイルページに表示される徹底的な統計情報など)。

その後、すべてのページでユーザーデータを再クエリする必要はありません。セッションデータから取得するだけです。

セッションIDを使用してデータベースにクエリを実行するための構築メソッドを作成してください。それは安全か有効なアプローチですか?

すべてに同じDBアカウントを使用している場合、本質的にユーザーテーブルのクエリについては安全性が低くなりません。すでに行っている他のクエリよりも危険にさらされることはありません。

DBにアクセスする際の安全性が心配なら、具体的な問題について学ぶことをお勧めします。SQL injection attacksを防ぐ。

を参照してください:あなたがダウン取り扱いセッションの一般的な考えを持っているようHow can I prevent SQL injection in PHP?

関連する問題