ユーザー名をセッションに保存する代わりに、ID を保存したい場合があります。WHERE
これは、クエリでステートメントを使用して結果を 1 行 (問題のユーザー) に制限することほど重要ではありません。ユーザー データベースのサイズが大きくなるにつれて、このクエリはますます非効率になるため、これは重要です。少し単純なロジックで、将来の問題を防ぎ、バランスのとれたより堅牢なアーキテクチャを持つことができます。
もう 1 つの重要な注意事項として、mysql_*
関数は廃止されているため、使用しないでください。PDO の使用を開始する必要があることはいくら強調してもしすぎることはありません。理解するのはそれほど難しいことではありません (mysql_*
機能についてはそれほど難しくありません) mysql_*
。コードが機能しなくなるか、既知のセキュリティ ホールでいっぱいの古い PHP バージョンで立ち往生することになります。
でキーを参照する前に、そのキーが$_SESSION
存在することを確認する必要があります。
session_start();
$session_identifier = isset($_SESSION['username']) ? $_SESSION['username'] : false;
$user_name = false;
if ($session_identifier) {
$pdo = new PDO("mysql:host=localhost;dbname=database", '-username-', '-password-');
$sql = '
SELECT
full_name
FROM
users
WHERE
username = ":username"
';
$statement = $pdo->prepare($sql);
if($statement->execute(array(':username'=>$session_identifier)))
$user_name = $statement->fetchColumn();
}
...そして、これを行うことができます:
if ($user_name)
print 'Welcome, '.$user_name;
else
print '<a href="login.php">Login</a>';
ドキュメンテーション