2012-04-14 3 views
1

사용자의 사용자 이름을 사용자 수준에서 벗어나는 방법을 찾아야합니다. 내 사용자 이름 변수는 다음과 같습니다. $username = $_SESSION['username']; '사용자'및 '레벨'열의 데이터베이스에 이미 모든 사용자 수준이 저장되어 있습니다. 다음과 같이 세션 변수를 만들 수있는 MySql 쿼리가 필요합니다. $_SESSION['level'] = 미리 감사드립니다!PHP - 사용자 이름을 기반으로 사용자 수준을 찾는 방법은 무엇입니까?

+0

코드를 더 게시하면 I와 Clexmond (SO 너무)가 더 도움이 될 수 있습니다. –

답변

2
SELECT level FROM users WHERE username = 'username'; 

그런 다음 DB (PDO 등)에 액세스하는 데 사용하는 항목에 따라 레벨을 가져 와서 세션에 넣으십시오. 예를 들어

, 당신은 PDO 사용하는 경우 : PDO를 사용하는 방법에 대한 자세한 내용은

# Connect to the database 
$db = new PDO("mysql:host=$host;dbname=$dbname", $username, $password); 

$sql = 'SELECT level FROM users WHERE username = :username'; 
$query = $db->prepare($sql); # Prepare SQL statement to prevent SQL Injection Attack 
$query->execute(array(':username' => $username)); # Bind parameter username 
$_SESSION['level'] = $query->getColumn(); # Fetch data & Assign to session variable 

체크 아웃 http://www.php.net/manual/en/class.pdo.php.

참고 : 데이터를 가져 오는 데 함수를 사용하고 $ db 연결 문이 해당 함수 외부에 있으면 함수가 작동하지 않는 $ db 변수가 함수 범위를 벗어 났음을 의미합니다. 이 문제를 해결하려면 global 키워드를 사용해야합니다. 예 :

# database.php 
$db = new PDO(...); 

# otherfile.php 
require_once("database.php"); 
function makeQuery($sql, $dataArr) { 
    global $db; # tell the compiler we mean the $db object above 
    $query = $db->prepare($sql); 
    $query->execute($dataArr); 
} 
+0

어떻게 mysql 쿼리에 넣을 수 있습니까? (저는 PHP와 MySQL을 처음 접했습니다). 나는 이것을 시도했지만 효과가 없었다. '$ qry = "사용자로부터의 SELECT 레벨 WHERE username = '$ username';"; $ result = mysql_query ($ qry); echo "$ result"; ' – Penian4

+1

mysql_query가 잘못된 방법입니다. 곧 폐기 될 예정이며 PDO와 같은 것을 사용하여 처리되는 많은 보안 문제가 있습니다. 내 대답에 무엇을 추가했는지 확인하십시오. – clexmond

+0

mysql 쿼리 코드를 알려주시겠습니까? – Penian4

0

당신이 세션 변수로 이름을 저장할 때 내가 시간에 세션 변수로 수준을 저장하는 것이 좋습니다 사용자는 그나마이 방법은 모든 쿼리를해야

$sql="SELECT * FROM $tbl_name WHERE user = '$user' AND pass = '$pass'"; 
$result=mysql_query($sql); 
$user = mysql_fetch_array($result); 
$_SESSION['user'] = $user['user']; 
$_SESSION['level'] = $user['level']; 

로그인되어 할 수있는 경우 사용자 레벨에 대한 시간은 언제든지 $ _SESSION [ 'level']을 사용하여 레벨을 호출 할 수 있습니다.

관련 문제