1

ユーザーのユーザー名からユーザーレベルを下げる方法を見つける必要があります。私のユーザー名変数は次 のとおり$username = $_SESSION['username']; です。データベースのテーブル「users」と列「level」にすべてのユーザーレベルがすでに保存されています。次のようなセッション変数を作成できるMySqlクエリが必要です。 $_SESSION['level'] = よろしくお願いします。

4

2 に答える 2

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

次に、DB へのアクセスに使用しているもの (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

PDO の使用に関する詳細については、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);
}
于 2012-04-14T20:59:49.910 に答える
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'] を使用していつでもそのレベルを呼び出すことができます

于 2012-04-14T21:41:47.793 に答える