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