2011-11-28 3 views
1

나는 현재 기본 로그인 스크립트를 가지고있다.

이 개 변수 사용자가 로그인 정의하는 경우 :

$_SESSION['user_id'] = $user['user_id']; 
$_SESSION['username'] = $user['username']; 

index.php 파일은 세션이 시작되면 그러나 나는 싶습니다, 모든 괜찮이

session_start(); 
if(array_key_exists('user_id', $_SESSION) && array_key_exists('username', $_SESSION)): 

있다 데이터베이스에서 더 많은 값을 추가하면 여기에이 코드가 있습니다.

$res = mysql_query($sql); 
$_SESSION = mysql_fetch_assoc($res); 

이 작업을 수행 할 때 overr $ _SESSION [ 'user_id'] 및 $ _SESSION [ 'username']을 나타냅니다. 나는이 시도 :

$_SESSION .= mysql_fetch_assoc($res); 

을했지만 작동하지 않았다.

누구에게 아이디어가 있습니까?

감사 피터

+0

'array_merge()'? – nickb

+0

나는 이것이 나쁜 생각이라고 덧붙이고 싶습니다. 어떤 시점에서는 사용자 이름, 역할, 전자 메일 등이 변경 될 수 있으므로 세션에 사용자 ID 만 저장해야합니다. 각 페이지에 필요한 것을로드하는 것이 좋습니다. – Xeoncross

+0

내가 그렇게하면 사이트는 매번 많은 양의 데이터를로드하므로 느려질 것입니다. 이 데이터베이스의 데이터는 사용자가 변경하지 않는 한 변경되지 않습니다. 사용자가 계정 정보를 변경하면 $ _SESSION 변수가 다시 정의됩니다. –

답변

5

합니다.

$_SESSION['query_result'] = mysql_fetch_assoc($res)과 같이하십시오. 방금 세션에 데이터베이스 결과의 하나의 열을 추가 할 경우이 같은 그것을 할 것입니다 :

$res = mysql_query($sql); 
$data = mysql_fetch_assoc($res); 
$_SESSION['myKey'] = $data['myKey']; 
6

$ _SESSION 배열입니다. $_SESSION 변수 전체를 오버 라이딩했습니다. 대신를 수행합니다 mysql_fetch_assoc($res);의 반환 값에 변수 $_SESSION의 값을 설정하고 있기 때문에입니다

$_SESSION['data'] = mysql_fetch_assoc($res); 

http://us2.php.net/manual/en/session.examples.basic.php

1

기능이 mysql_로 참조 배열

$res = mysql_query($sql); 
$_SESSION = array_merge(mysql_fetch_assoc($res), $_SESSION); 

병합 시도 * 향후에는 더 이상 사용되지 않으며 제거되지 않으므로 PDO 또는 MySQLi를 사용하는 것이 좋습니다.

일부 호스트 사용자는 이러한 기능을 비활성화했습니다.

+0

2 년 전 :) –

관련 문제