2010-04-12 39 views
0

即時通訊製作遊戲社區,我想能夠抓住任何頁面上的用戶的任何信息,而沒有這樣做,而不是在我做這個功能的所有網頁上有太多的查詢。這樣做更好嗎?這會減慢網站嗎?全球獲得登錄用戶的用戶表中的任何字段值

/** 
* Возьмем значение из любой области authed пользователей. 
*/ 
function UserData($f) 
{ 
    global $_SESSION; 


    return mysql_result(mysql_query("SELECT `$f` FROM `users` WHERE `id` = ".intval($_SESSION['id'])), 0, $f); 
} 
+0

不要忘記標記答案適合你作爲「接受」。 – pixeline 2010-04-13 10:16:52

回答

1

該函數仍然向您的頁面添加查詢。

如何將基本用戶信息存儲在會話或cookie中?

+0

是的,你登錄後,將所有數據保存到$ _SESSION []變量。 – 2010-04-12 22:49:24

-1

這只是一點點難以決定,但總的來說,這取決於你如何使用你的功能。

一個着名的技術是將所有用戶數據加載到腳本的最頂部並在請求期間使用該數據。但是,如果你正在構建一個基於AJAX的應用程序(我猜你是這樣的),那並不總是有用,因爲大多數數據是你永遠不會使用的。

一個很好的折衷辦法是將全局用戶數據用於普通頁面請求,另一方面對AJAX請求進行單一屬性查詢等等。

這又取決於您的應用程序。經驗法則:試着密切關注你「查詢」數據庫的頻率。 PHP通常比數據庫查詢更快,因此您寧願將查詢保持在最低限度。

2

$ _SESSION已經是全球性的,並且是解決您的問題的正確方法。

最適合您的需要是存儲用戶數據,當他登錄時,到一個數組,像這樣:

session_start(); 
// $mysql_data_row is the mysql row containing your user's data; 

$_SESSION['user'] = $mysql_data_row; 

而且在每一個頁面,你將有機會獲得存儲在所有數據會話而不必查詢數據庫。例如:

session_start(); 
echo 'hello ', $_SESSION['user']['name']; 
相關問題