2010-04-12 4 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

답변

1

이 함수는 여전히 페이지에 쿼리를 추가합니다.

세션이나 쿠키에 기본 사용자 정보를 저장하는 방법은 어떻습니까?

+0

예. 로그인 후 모든 데이터를 $ _SESSION [] 변수에 저장하십시오. –

-1

그것은 단지 givens에서 결정하기가 약간 어렵지만, 일반적으로 함수를 사용하는 방법에 따라 다릅니다.

유명한 기술 중 하나는 스크립트의 맨 위에 모든 사용자 데이터를로드하여 요청하는 동안 사용하는 것입니다. 그러나 내가 생각하기에 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']; 
관련 문제